前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot@Profile注解

SpringBoot@Profile注解

原创
作者头像
Java学术趴
发布2022-08-17 23:58:27
1K0
发布2022-08-17 23:58:27
举报
文章被收录于专栏:Java全栈·

👨‍🎓作者:Java学术趴 🏦仓库:GithubGitee ✏️博客:CSDN掘金InfoQ云+社区 💌公众号:Java学术趴 🚫特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系小编授权。 🙏版权声明:文章里的部分文字或者图片来自于互联网以及百度百科,如有侵权请尽快联系小编。微信搜索公众号Java学术趴联系小编。

☠️每日毒鸡汤:这个社会是存在不公平的,不要抱怨,因为没有用!人总是在反省中进步的!

@Profile

1.1 介绍

  • @Profile : 在开发项目的时候,一个项目可能存在多种环境。比如:生产环境、开发环境、测试环境。其中,每种环境所对应不同的配置,为了提高开发效率,不一直进行配置的修改,还有就是在不同的环境下想要执行的方法不一致,SpringBoot提供了一个可以动态指定配置文件的注解,这个注解就是用来动态指定配置。
  • @Profile :该注解的作用就是指定某个类或者某个方法在特定的配置环境下生效,只要是被 @Component@Configuration注解的类都可以使用 @Profile注解。在使用DI来依赖注入的时候,能够根据@profile标明的环境,将注入符合当前运行环境的相应的bean。
  • 重点:没有使用该注解说明此时的类和方法在任何的环境下都可以生效

该注解生效的条件:

  • @Component@Configuration注解的类可以使用该注解

该注解需要的参数:

  • @Profile中需要指定一个字符串,指定该Bean生效的环境。 @profile("dev")

1.2 使用方式

@Profile使用在类上

代码语言:javascript
复制
@Configuration
// 此时这个类只能在 prod 环境下才可以生效,其中这个类中的所有方法也只有在该环境下才生效
@Profile("prod")
public class Test {
  ...
}
复制代码

@Profile使用在方法上

代码语言:javascript
复制
@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

代码语言:javascript
复制
spring.profiles.active=dev 
复制代码

application.yml

代码语言:javascript
复制
spring:
  profiles:
    active: dev
复制代码

注意:写在 @Profile 注解中的环境必须和配置文件中的环境名一致。

1.4 SpringBoot的多资源配置

  • Springboot的资源配置文件除了application.properties之外,还可以有对应的资源文件application-{profile}.properties。 可以声明多种环境的不同配置。
代码语言:javascript
复制
// 比如:存在两种环境, dev 和 prod
applcation.properties - 公共配置
application-dev.properties - 开发环境配置
application-prod.properties - 生产环境配置
复制代码

我们只需要在主配置文件中使用 spring.profiles.active = dev 即可指定相应的配置文件

application.yml

代码语言:javascript
复制
spring.
    profiles.
        active: dev
复制代码

按照以上方式,此时会把 dev 的环境激活。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • @Profile
  • 1.1 介绍
    • 1.2 使用方式
    • 1.3 SpringBoot声明开发环境
    • 1.4 SpringBoot的多资源配置
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档