Spring Pom Properties
前言
Spring properties yml yaml记录
spring.profiles.active和spring.profiles.include的区别与使用
spring.profiles.active属性
- 遵循application-${profile}.properties。
- 开发环境配置文件:application-dev.properties
- 测试环境配置文件:application-test.properties
- 生产环境配置文件:application-prod.properties
- 根据部署场景不同,切换不同的配置文件:配置spring.profiles.active,属性值为${profile}。
- spring.profiles.active=dev:启用application-dev.properties
- spring.profiles.active=test:启用application-test.properties
- spring.profiles.active=prod:启用application-prod.properties
- 启动时指定: 在执行有参启动时,可以在命令中进行指定要选用的配置文件,例如:
java -jar xx.jar --spring.profiles.active=dev
这个命令的优先级是最高的,即使application.properties中已经配置spring.profiles.active=dev,最终程序还是会用application-test.properties配置文件。
spring.profiles.include属性
pring.profiles.include属性:同时启用其他的profile
即在启用application-dev.properties开发环境(主)配置文件时,同时启用application-dev1.properties和application-dev2.propertie。配置方法
- 若是properties文件:
spring.profiles.include=dev1,dev2
- 若是yaml文件中, 或者:
1
2
3spring.profiles.include:
-dev1
-dev2spring.profiles.include:dev1,dev2
配置多个properties,多环境配置
application.properties/yml配置
spring.profiles.active=@profileActive@
1
2
3spring:
profiles:
active: @profileActive@pom.xml中profiles配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35<!-- 多环境配置方案 -->
<profiles>
<profile>
<id>dev</id>
<properties>
<profileActive>dev</profileActive>
</properties>
<activation>
<!-- 默认情况下使用dev开发配置 如 打包时不包含 -p 参数 -->
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>prod</id>
<properties>
<profileActive>prod</profileActive>
</properties>
</profile>
</profiles>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.json</include>
<!-- resource可以用${profileActive}配置 -->
<include>application-${profileActive}.yml</include>
</includes>
</resource>
</resources>多环境使用
打包命令
1 | mvn package -P dev -DskipTests |
在dev环境下使用@Profile("dev")
Spring Boot读取properties配置文件中的数据
1、使用@Value注解读取
application.properties/yml:
1
2
demo.name=Name
demo.age=18
JAVA代码:
1
2
3
4
5
6
7
private String name;
private String age;
2、使用Environment读取
application.properties/yml:
1
2
demo.name=Name
demo.age=18
JAVA代码:
1
2
3
4
5
6
7
8
9
import org.springframework.core.env.Environment;
private Environment environment;
environment.getProperty("demo.name")
environment.getProperty("demo.age")
如果发现中文乱码可以修改application.properties/yml:
1
2
3
4
5
server.tomcat.uri-encoding=UTF-8
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
spring.messages.encoding=UTF-8
3、使用@ConfigurationProperties注解读取
application.properties/yml:
1
2
demo.web.title=Name
demo.web.age=18
JAVA代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//节点
public class ConfigBeanProp {
private final Web web = new Web(); //子节点
public static class Web {
private String title = "xxx"; //可以设置缺省值
private String age = "20";
}
}
@Component 表示将该类标识为Bean
@ConfigurationProperties(prefix = "demo")用于绑定属性,其中prefix表示所绑定的属性的前缀。
@PropertySource(value = "config.properties")表示配置文件路径。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 以甯为意!
评论