写在前面:
我是「境里婆娑」。我还是从前那个少年,没有一丝丝改变,时间只不过是考验,种在心中信念丝毫未减,眼前这个少年,还是最初那张脸,面前再多艰险不退却。
写博客的目的就是分享给大家一起学习交流,如果您对 Java感兴趣,可以关注我,我们一起学习
前言:写SpringBoot项目时,在测试环境是一套数据库配置,到了生产环境都要将配置改过来,如果改错了就一堆坑来了,所以Springboot提供了多环境配置,可以实现多种环境配置的动态切换,本博客介绍一下Springboot profile使用的一些细节
一、多Profile的资源文件
在项目中写配置Profile文件时,文件命名可以是application-xxx.properties/yml,SpringBoot启动默认加载的是application.properties。
一般来说多环境配置如下:
application-dev.yml
application-uat.yml
aplication-prod.yml
项目启动时候具体使用哪个环境配置在application.properties添加如下配置:
spring.profiles.active=dev
项目结构如下所示:
二、profile激活
实际使用中,有prod、test、uat等多个环境,运行时使用哪个profile由spring.profiles.active控制,以下说明2种方式:
- 配置文件方式
- 命令行方式
1、配置文件方式激活profile
确定当前使用的是哪个环境,环境的值与application-prod.properties中-后面的值对应,这是SpringBoot约定好的。
在application.properties中添加下面的配置。需要注意的是,spring.profiles.active的取值应该与@Profile注解中的标示保持一致。
spring.profiles.active=dev
application.yml中配置,效果是一样的
spring:
profiles:
active: dev
2、命令行方式激活profile
在打包运行的时候添加参数:
java -jar xxx.jar --spring.profiles.active=uat
三、@profile使用
@profile注解的作用是指定类或方法在特定的 Profile 环境生效,任何@Component或@Configuration注解的类都可以使用@Profile注解。在使用DI来依赖注入的时候,能够根据@profile标明的环境,将注入符合当前运行环境的相应的bean
- @profile可以用在方法和类上
用在类上:
@Profile("dev")
@ConfigurationProperties(prefix = "person")
@Component
@Data
public class Boss implements Person{
private String name;
private Integer age;
}
用在方法上:
@Configuration
public class AppConfig {
@Bean("dataSource")
@Profile("dev")
public Color color() {
return new Color();
}
}
以上就是对Profile配置详细介绍。本章节详细代码在:spring-boot-profile