3.跟我学SpringBoot-配置文件注入

字数 590阅读 503

SpringBoot没有XML配置文件,但是还是有响应的属性参数配置文件的。Spring Boot优先于配置的惯例,旨在让应用尽快启动和运行。在一般情况下,我们不需要做太多的配置就能够让SpringBoot正常运行。在一些特殊的情况下,我们需要做修改一些配置,或者需要有自己的配置属性。

1.默认配置

当我们创建一个SpringBoot项目的时候,系统默认会为我们在src/main/java/resources目录下创建一个application.properties。SpringBoot支持yml类型的配置方式,即application.properties=application.yml,这一点和以前的Spring应用有些区别,并且SpringBoot和SpringCloud应用都推荐yml的配置方式,因为配置属性会非常多,用yml的类型进行层级的区分,看起来更方便一些。

例如:配置应用serverName和端口号

application.yml

server:
  port: 8088
  contextPath: /config

这里说一下yml格式文件的要求
1、配置多层之间以:隔开,比如server后面是:,不能缺少
2、下一级和上一级换行,且只能是两个空格,不能是tab,比如port前面是两个空格
3、属性配置和参数值之间有一个空格,比如/config 前面是一个空格

上述文件配置应用的虚拟路径是/config,端口是8088,所以应用启动后应该是http://localhost:8088/config来进行访问。

这一块如果出现配置错误很难发现,一定要把yml的规则掌握清楚。

2.自定义属性的读取

实际应用中会有很多自定义属性,可以通过@Value的方式读取

配置自定义参数

userConfig:
  age: 20

读取自定义参数

@RestController
public class ConfigController {
    @Value("${userConfig.age}")
    private String age;

    @RequestMapping("/config")
    public String config() {
        return "age:" + age;
    }

}

运行如下:


参数运行.png

3. 将配置文件的属性赋给实体类

很多情况下,需要配置一个实体类,来接收配置文件的参数。

配置文件

userConfig:
  age: 20
  name: test

配置实体类

@Component
@ConfigurationProperties(prefix = "userConfig")
public class UserConfig {
    private int age;
    private String name;
// get set省略
}

获取参数

 @Autowired
    private UserConfig userConfig;
    @RequestMapping("/user")
    public String user() {
        return "name:" + userConfig.getName()+"<br/>age:"+userConfig.getAge();
    }
注入实体类.png

4.总结

SpringBoot获取配置文件还有其他方式,常用的就这几类,后续和其他组件整合时再依次讲配置用途。

源码下载

本例子详细源码

推荐阅读更多精彩内容