← 返回首页
@ConditionalOnProperty注解
发表时间:2024-01-30 01:18:05
@ConditionalOnProperty注解

@ConditionalOnProperty注解可以根据属性值来控制类或某个方法是否需要加载。它既可以放在类上也可以放在方法上。

实例:

1).在application.yml中设置配置属性

myconfig:
  #配置是否加载类
  is_load_bean: true

2).编写加载类

package com.simoniu.spt.course.config;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;

/* @author: simoniu
 * @description: 使用@ConditionalOnProperty
 * @date: 2023/4/24 10:20
**/
@Component
@Slf4j
@ConditionalOnProperty(value = "myconfig.is_load_bean",havingValue = "true",matchIfMissing = true)
public class MyConditionalConfig {

    @Value("${myconfig.is_load_bean}")
    private String isLoadBean;

    public MyConditionalConfig(){
        log.info("MyConditionalConfig is constructed...");
    }

    @Bean
    @ConditionalOnProperty(value = "is_load_bean",havingValue = "true",matchIfMissing = true)
    public Object loadBean(){
        log.info("执行loadBean()....");
        return new Object();
    }

    @Bean
    public void compareLoadBean(){
        log.info("加载bean属性:" + isLoadBean);
    }
}

启动项目:

2024-01-30 09:15:25.760  INFO 11420 --- [  restartedMain] c.s.s.course.config.MyConditionalConfig  : MyConditionalConfig is constructed...
2024-01-30 09:15:25.809  INFO 11420 --- [  restartedMain] c.s.s.course.config.MyConditionalConfig  : 执行loadBean()....
2024-01-30 09:15:25.809  INFO 11420 --- [  restartedMain] c.s.s.course.config.MyConditionalConfig  : 加载bean属性:true

当配置文件的is_load_bean属性信息改成false时则不会打印上面三行输出的结果。