SpringBoot实战之2 读取配置文件

标签: springboot

大话springboot

我们聊一聊最近很火的springboot,它可以很快捷,快速的创建一个spring的web项目。说白一点,他是spring+springMVC+持久层框架+数据源连接池+web容器+。。。的脚手架。
springboot的设计目的是用来简化新Spring应用的初始搭建以及开发过程。对于很熟练的开发(以我所见,起码是处于开发一线3年以上期间的才算熟练),spingboot的出现无疑是福音。否则,强行去运用springboot反而适得其反,黑盒开发。如果一定要用springboot,那么一定要多动脑,多思考,多去开源社区走走开发前辈趟出来坑。

导包

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.8.RELEASE</version>
</parent>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

导入以上jar包即可进行简单的spingboot项目开发

配置文件和启动入口

resources文件夹下新建application.yml 文件。文件内容如下

spring:
  profiles:
    active: dev

resources文件夹下新建application-dev.yml 文件。文件内容如下

server:
  port: 9527

src文件夹下建包并创建java文件,内容如下:

@SpringBootApplication
public class SpringbootConfigApplication {
    public static void main(String[] args){
        SpringApplication.run(SpringbootConfigApplication.class,args) ;
    }
}

此时已经创建好基于springboot的web项目,可以启动SpringbootConfigApplication的main方法,然后用telnet localhost 9527 能够连接上服务。

读取项目配置文件内容

在resources文件夹下新建test.properties,内容如下

com.hsy.name=heshiyuan
com.hsy.age=18

在SpringbootConfigApplication所在包下新建bean包(很重要,springboot只会扫描入口类层级一下的注解),并新建user.java文件,内容如下

@Configuration
@PropertySource(value = "classpath:test.properties")
@ConfigurationProperties(prefix = "com.hsy")
public class User {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

在application.yml添加如下内容,实现第二种配置属性读取。

my:
 name: heshiyuan
 age: 18
 number:  ${random.int}
 uuid : ${random.uuid}
 max: ${random.int(10)}
 value: ${random.value}
 greeting: hi,i'm  ${my.name}

bean包下新建ConfigBean.java.

@ConfigurationProperties(prefix = "my")
@Component
public class ConfigBean {

    private String name;
    private int age;
    private int number;
    private String uuid;
    private int max;
    private String value;
    private String greeting;
    //...省略seter,getter方法
}

提供http api接口

在bean包统计目录创建controller包,并新建RestfulController.java

@RestController
@RequestMapping(value="/api/restful/")
@EnableConfigurationProperties({ConfigBean.class,User.class})
public class RestfulController {
    @Autowired
    ConfigBean configBean;

    @RequestMapping(value = "/v1.0/configBean",method = RequestMethod.GET)
    public String beanValue(){
        return configBean.getGreeting()+" >>>>"+configBean.getName()+" >>>>"+ configBean.getUuid()+" >>>>"+configBean.getMax();
    }

    @Autowired
    User user;
    @RequestMapping(value = {"/v1.0/user/list","/users"},method = RequestMethod.GET,produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    public String user(){
        return user.getName()+user.getAge();
    }

    @Value("${my.name}")
    private String name;
    @Value("${my.age}")
    private int age;

    @RequestMapping(value = "/v1.0/my",method = RequestMethod.GET)
    public String dataValue(){
        return name+":"+age;
    }

}

测试

用postman api工具进行测试

这里写图片描述

尾声

项目源码:https://github.com/shiyuan2he/springboot.git

版权声明:本文为u012806787原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u012806787/article/details/78583814

智能推荐

springboot启动读取外部配置文件

有时候项目打包成一个jar 或者war ,通过java -jar 命令运行springboot 项目,因为springboot 项目有自己的application.properties 配置文件,但是我们打完包之后,它也会打到包里边,倒是也能打开压缩包修改properties 文件,但是也是较为麻烦。   现...

springboot读取yml配置文件

springboot读取yml配置文件里的属性到Java代码,一般有两种常用方式: 使用注解@ConfigurationProperties批量读取 使用注解@Value单个读取 示例yml文件: 一、 使用@ConfigurationProperties批量读取 如果我们要读取data.elasticsearch下面的所有配置可以使用@ConfigurationProperties批量读取。 使...

人工智能基础-数学方法-形式逻辑

1956 年召开的达特茅斯会议宣告了人工智能的诞生。在人工智能的襁褓期,各位奠基者们,包括约翰·麦卡锡、赫伯特·西蒙、马文·明斯基等未来的图灵奖得主,他们的愿景是让“具备抽象思考能力的程序解释合成的物质如何能够拥有人类的心智”。 通俗地说,理想的人工智能应该具备抽象意义上的学习、推理与归纳能力,其通用性将远远强于解决国际象棋或是围棋...

P3397 地毯——题解2020.10.3

P3397 地毯 思路分析 定义一个二维数组 a[ ][ ]存放每个点覆盖地毯的个数,下标表示每个点的坐标; 设置一个二重循环依次遍历每个地毯覆盖的坐标范围,使地毯覆盖范围内点的值+1; 打印出该二维数组 a[ ][ ]即为本题答案; 注意事项 由题可知:对于20%的数据,有 n≤50,m≤100;对于100%的数据,有 n,m≤1000;所以数组定义为a[1003][1003]...

反射注解案例

1、反射案例: 需求 写一个"框架",不能改变该类的任何代码的前提下,可以帮我们创建任意类的对象,并且执行其中任意方法 实现: 配置文件 反射 步骤: 创建对象 将需要创建的对象的全类名和需要执行的方法定义在配置文件中 在程序中加载读取配置文件 使用反射技术来加载类文件进内存 执行方法 第一步:Person类(创建对象) 第二步:配置文件 pro.properties(将需要创...

猜你喜欢

lambert与half lambert模型逐顶点和逐片元的漫反射光照

兰伯特模型 逐顶点光照 逐片元光照: 效果对比:左边为逐片元光照。右边为逐顶点光照。右边明暗交界处有较明显的锯齿 半兰伯特光照模型 兰伯特模型的一个问题就是背光面只有一种颜色,缺乏立体感。Half Lambert用于解决这个问题 半兰伯特模型公式: 与兰伯特模型的差别主要在于不同于将背光面光都设为0,它将背光的光也即负值也映射到[0,1]区间。避免了背光的颜色只有0这一种值。需要注意的是,half...

[React官网入门教程]三子棋游戏完整代码

入门教程: 认识 React 最终效果 完整代码 index.css部分 index.css部分...

票据打印机-ESC/POS指令使用

给打印机输入串口命令,是打印机处于一种状态,然后就能干你想让他干的活了.百度ESC/POS文档随便拿一个正规的都一样,就不在这里放地址了,拿到这个文档以后代码的编写我只举一个例子,其它的模式也都一样 比如说这个功能为初始化打印机,他有三种输入模式,第一种是ASCII码(ESC @),第二种是Hex也就是16进制数(1B 40),第三种Decimal十进制数(27 64),我以16进制为例,那么他的...

JDBC工具类抽取

以下内容为观看黑马教学视频后仿写 新建一个JAVA Project,目录结构如下:    jdbc配置文件 jdbc.properties jdbc工具类  JDBCUtil.java 测试程序 MainTest.java 数据库中数据如下: 执行测试程序,运行结果如下:...

如何根据CIFAR-10的格式制作自己的数据集(C/C++版)

首先特别感谢博主 @yhl_leo 关于CIFER-10数据集可查看官方介绍,存储信息介绍如下: 不啰嗦,直接上代码实例,图片如何存储为二进制格式的三个代码文件如下: 相应的代码及备注依次如下: 本人转换后的结果如下: 最后,将数据放入CIFAR-10模型中,并修改一下部分参数,效果还不错!...