在yaml中基于注解实现某个配置类是否生效

        之前项目涉及到一个基于cas集成sso的需求,但是有时候测试的时候不想要这个sso功能,每次去注释下代码很麻烦,在组长的带领帮助下就产生了这篇文章。

目录

1. 编写一个cas是否启用的属性类,便于yaml进行配置

 2. 编写未启用cas的自动配置类(false)

3.编写启用cas后的自动配置类(true)

 4. 同步修改yaml中的配置类


1. 编写一个cas是否启用的属性类,便于yaml进行配置

@ConfigurationProperties(prefix = "jesse.cas")//这里是yaml中的层级,你可以自定义
public class MyCasProperties {

    /**
     * 是否启用cas登录
     */
    private boolean enableCas = true;

    public boolean isEnableCas() {
        return enableCas;
    }

    public void setEnableCas(boolean enableCas) {
        this.enableCas = enableCas;
    }

同步的yaml配置:

jesse:
 cas:
   enable-cas: true

 2. 编写未启用cas的自动配置类(false)

@Configuration
@EnableConfigurationProperties(MyCasProperties.class)//同步填写属性类
public class MyCasAutoConfiguration {

    @Autowired
    private MyCasProperties myCasProperties;

    @PostConstruct
    public void init() {
        if (myCasProperties.isEnableCas()) {
             System.out.println("已开启CAS!");
        } else {
            System.out.println("未开启CAS!");
        }
    }
}

3.编写启用cas后的自动配置类(true)

@ConditionalOnProperty(prefix = "jesse.cas", name = {"enableCas", "enable-cas"}, matchIfMissing = true, havingValue = "true")//填写对应的配置,如果yaml中对应的配置为true时才会进入当前配置类
@Configuration
//@EnableCasClient 如果是springboot且引入了相关依赖则可以直接使用该注解减少手写cas相关配置
@EnableConfigurationProperties(MyCasProperties.class)//同步填写属性类
public class MyCasAutoConfigurationTrue {

    @Autowired
    private MyCasProperties myCasProperties;

    @PostConstruct
    public void init() {
        System.out.println("开启CAS后的处理!");
    }
    
/**
 * CAS 配置类
 */
@Configuration
public class CasFilterConfig {
    //填写你要对cas进行哪些配置
}

 4. 同步修改yaml中的配置类

like this:

jesse:
 cas:
   enable-cas: true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值