携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第10天,点击查看活动详情
👨🎓作者:Java学术趴
💌公众号:Java学术趴
🚫特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系小编授权。
🙏版权声明:文章里的部分文字或者图片来自于互联网以及百度百科,如有侵权请尽快联系小编。微信搜索公众号Java学术趴联系小编。
☠️每日毒鸡汤:这个社会是存在不公平的,不要抱怨,因为没有用!人总是在反省中进步的!
@Profile
1.1 介绍
- @Profile : 在开发项目的时候,一个项目可能存在多种环境。比如:生产环境、开发环境、测试环境。其中,每种环境所对应不同的配置,为了提高开发效率,不一直进行配置的修改,还有就是在不同的环境下想要执行的方法不一致,SpringBoot提供了一个可以动态指定配置文件的注解,这个注解就是用来动态指定配置。
- @Profile :该注解的作用就是指定某个类或者某个方法在特定的配置环境下生效,只要是被 @Component或 @Configuration注解的类都可以使用 @Profile注解。在使用DI来依赖注入的时候,能够根据@profile标明的环境,将注入符合当前运行环境的相应的bean。
- 重点:没有使用该注解说明此时的类和方法在任何的环境下都可以生效
该注解生效的条件:
- 被 @Component或 @Configuration注解的类可以使用该注解
该注解需要的参数:
- @Profile中需要指定一个字符串,指定该Bean生效的环境。 @profile("dev")
1.2 使用方式
@Profile使用在类上
@Configuration
// 此时这个类只能在 prod 环境下才可以生效,其中这个类中的所有方法也只有在该环境下才生效
@Profile("prod")
public class Test {
...
}
@Profile使用在方法上
@Configuration
// 因为这个类没有被 @Profile 声明,所以此时这个类在所有的环境中都可以生效
public class Test {
// 因为这个方法被 @Profile("dev") 声明,所以该方法只会在 dev 环境下才会生效
@Profile("dev")
public void test01() {
...
}
// 因为这个方法被 @Profile("prod") 声明,所以该方法只会在 prod 环境下才会生效
@Profile("prod")
public void test02() {
}
}
1.3 SpringBoot声明开发环境
SpringBoot中使用主配置文件 (application.yml、application.properties) 中的 spring.profiles.active 来配置当前项目所处的环境。
application.properties
spring.profiles.active=dev
application.yml
spring:
profiles:
active: dev
注意:写在 @Profile 注解中的环境必须和配置文件中的环境名一致。
1.4 SpringBoot的多资源配置
- Springboot的资源配置文件除了application.properties之外,还可以有对应的资源文件application-{profile}.properties。 可以声明多种环境的不同配置。
// 比如:存在两种环境, dev 和 prod
applcation.properties - 公共配置
application-dev.properties - 开发环境配置
application-prod.properties - 生产环境配置
我们只需要在主配置文件中使用 spring.profiles.active = dev 即可指定相应的配置文件
application.yml
spring.
profiles.
active: dev
按照以上方式,此时会把 dev 的环境激活。