spring boot 加载配置文件

让人想犯罪 __ 提交于 2020-12-04 10:54:12

以下例子代码在github中,[代码链接](https://github.com/fiuty/demo)
##### 一、加载配置文件值
在springboot项目中,配置值可以通过两种方式来设置,一种是配置值写在properties文件中,另一种是写在yaml中。
(1)配置值写在properties文件中,读取properties配置值有两种方式,一种是写一个配置类,另一种是注入Environment类来获取。
default.properties配置值如下:
![image.png](https://upload-images.jianshu.io/upload_images/17109776-0a3d1f8eed22ccb8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

- 写一个配置类读取
```
@Configuration
@PropertySource(value = {"default.properties"})
@Data
public class DefaultPropertiesConfig {

    @Value("${name}")
    private String name;

    @Value("${age}")
    private Integer age;

}
```
- 注入Environment类读取
```
    @Autowired
    private Environment environment;

    environment.getProperty("name")+":"+environment.getProperty("age")
```
(2)配置值写在yaml文件中,可以通过写配置类来读取配置值,也可以通过@Value注解来直接读取字段
![image.png](https://upload-images.jianshu.io/upload_images/17109776-c11093aac19f3ef9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
```
# yaml配置文件
default:
  student:
    name: lisi
    age: 19
```
- 写一个配置类读取
```
@Configuration
@ConfigurationProperties(prefix = "default.student")
@Data
public class DefaultYamlConfig {

    private String name;

    private Integer age;

}
```
- 通过@Value注解
```
    @Value("${default.student.name}")
    private String name;

    @Value("${default.student.age}")
    private int age;
```
**以上三种方式读取配置文件配置值,实现类读取的代码如下**:
```
@Service
public class DemoServiceImpl implements DemoService {

    @Autowired
    private DefaultPropertiesConfig defaultConfig;

    @Autowired
    private Environment environment;

    @Autowired
    private DefaultYamlConfig defaultYamlConfig;

    @Value("${default.student.name}")
    private String name;

    @Value("${default.student.age}")
    private int age;


    @Override
    public String properties1() {
        return defaultConfig.getName() + ":" + defaultConfig.getAge();
    }

    @Override
    public String properties2() {
        return environment.getProperty("name")+":"+environment.getProperty("age");
    }

    @Override
    public String properties3() {
        return defaultYamlConfig.getName() + ":" + defaultYamlConfig.getAge();
    }

    @Override
    public String properties4() {
        return name + ":" + age;
    }
}
```
##### 二、环境化配置profile
通常默认配置文件是application.yaml,可以通过application-dev.yaml、application-prod.yaml文件来指定不同环境不同配置文件。
- 方式一,在application.yaml里面指定不同环境不同配置文件

```
spring.profiles.active:dev
spring.profiles.active:prod
```
- 方式二,启动项目时通过命令行传参
```
java -jar xxx.jar --spring.config.name=appilcation-dev
java -jar xxx.jar --spring.profile.active="dev"
```

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!