Springboot注解@Profile的作用

 

目录

 

作用

使用场景

使用技巧

激活配置文件

生产例子


作用

Springboot这个注解说白了就是用于区分有些组件、类、方法在不同环境下是否要注入启动的一个注解,打个比方我有个swagger配置类,只要注入这个类在spring中我就可以使用Swaggger这个插件,但我想让他在dev环境下启动,在生产prod下不在启动。那就需要这个注解就行了,他会根据配置文件,进行当前环境识别进而决定是否加载对应有此注解的方法、类等。

使用场景

  1. 配置类:在配置类上使用 @Profile 来加载特定环境的配置。

不同环境下的配置,如开发(dev)、测试(test)和生产(prod)环境

  1. 组件类:在组件(如 @Bean@Service@Component 等)上使用 @Profile 来限制在特定配置文件激活时才创建。

  2. 方法级别:在配置类中的方法上使用 @Profile,使得只有在特定配置文件激活时,对应的 @Bean 方法才会被调用。

@Configuration
@Profile("dev")
public class DevConfig {
    // 配置仅在 'dev' 配置文件激活时应用
}

@Service
@Profile({"test", "prod"})
public class MyService {
    // 该服务仅在 'test' 或 'prod' 配置文件激活时创建
}

@Configuration
public class AppConfig {

    @Bean
    @Profile("prod")
    public MyBean prodBean() {
        // 该 Bean 仅在 'prod' 配置文件激活时创建
    }
}

使用技巧

组合使用:你可以将多个配置文件指定到一个组件上,如 @Profile({"dev", "test"}),这意味着组件会在任一指定的配置文件激活时被注册。

否定表达式@Profile 支持使用 ! 进行否定表达式,例如 @Profile("!prod"),这表示在非生产环境下激活该组件。

激活配置文件

配置文件可以通过多种方式激活:

  • 环境变量:设置 SPRING_PROFILES_ACTIVE 环境变量。
  • 程序参数:在程序运行时通过命令行参数设置,如 --spring.profiles.active=dev。(全局变量设置方式,一般没这么干的)
  • 应用配置:在 application.propertiesapplication.yml 文件中设置 spring.profiles.active

生产例子

/**
 * 在"uat","dev","local","sit"开发环境设置跨域允许
 * @return
 */
@Profile({"uat","dev","local","sit"})
@Bean
public CorsFilter corsFilter() {
    UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
    //对接口配置跨域设置
    source.registerCorsConfiguration("/**", buildConfig());
    return new CorsFilter(source);
}

------------------------------------------与正文内容无关------------------------------------
如果觉的文章写对各位读者老爷们有帮助的话,麻烦点赞加关注呗!小弟在这拜谢了!
如果您觉得我的文章在某些地方写的不尽人意或者写的不对,从而让你对你人生观产生颠覆(概不负责),需要斧正,麻烦在评论区不吝赐教,作者看到后会根据您的提示查阅文章进行修改,还这世间一个公理一片蓝天

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A乐神

恭喜发财啊,老板,嘻嘻!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值