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
 3- spring: 
 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 许可协议。转载请注明来自 以甯为意!
 评论


