SpringBoot抽取配置和配置拆分
将属性值抽成配置,易于维护和修改
1.使用@ConfigurationProperties注解自定义配置
- 在SpringBoot中自定义配置使用注解
@ConfigurationProperties(prefix = "xxx")表示获取配置文件中的xxx配置。 - pom.xml中引入如下的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
- 自定义实体类
@Component
@ConfigurationProperties(prefix = "wechat")
public class WechatConfig {
private String appId;
private String secret;
private String token;
private String url;
public void setAppId(String appId) {
this.appId = appId;
}
public String getAppId() {
return appId;
}
public void setSecret(String secret) {
this.secret = secret;
}
public String getSecret() {
return secret;
}
public void setToken(String token) {
this.token = token;
}
public String getToken() {
return token;
}
public void setUrl(String url) {
this.url = url;
}
public String getUrl() {
return url;
}
}
- application.yml 中写法,一定要注意yml语法,缩进和空格。
wechat:
appId: wxxxx
secret: xxxxx
token: hos
url: http://68uew6.natxxfree.xx
- 这样就自定义了属性配置,将配置文件的属性赋值给自定义的实体类,随意更改。
2.使用@Value()注解给属性复制
- 在代码中定义好配置的属性
@Value("${api.pack}")
private String pack;
//给属性设置默认值,不配置的时候默认值生效
@Value("${api.enableCache:true}")
private boolearn enableCache;
- 在application中配置相应的内容
api:
pack: com.fj.controller
enableCache: true
配置拆分
1.多环境配置文件
-
项目可能分为开发环境,测试环境,生产环境等,各个环境的配置存在差异。这时候就需要拆分配置文件,区分环境。
-
application.yml 编写相同的配置,并激活指定环境的配置文件。各个环境的配置文件中则编写不同的配置内容。
application.yml的配置
spring:
profiles:
active: dev #激活的配置文件
xxxx相同的配置内容也写在这个文件
application-dev.yml的配置
spring:
datasource:
type: datasource
driverClassName: driverClass
url: devUrl
username: devName
password: devPwd
application-prod.yml的配置
spring:
datasource:
type: datasource
driverClassName: driverClass
url: prodUrl
username: prodName
password: prodPwd
2.启动指定配置文件
除了上述的方式外,也可以在启动时指定配置文件的位置。


浙公网安备 33010602011771号