首页 > 其他 > 详细

@Conditional与Condition接口

时间:2021-04-28 22:03:39      阅读:49      评论:0      收藏:0      [点我收藏+]

@Conditional来指定一定条件下注册组件对像所有的条件必须实现org.springframework.context.annotation.Condition接口,重写matches方法,通过matches中的返回值(boolean)来决定组件是否注册

下方案例依赖于Spring的依赖+Lombok

@Slf4j
public class Test1 {

    @Test
    public void t1() {
        ApplicationContext ac = new AnnotationConfigApplicationContext(MainCfg.class);
        System.out.println("\n\n\n\n\n");
        log.debug("{}", ac.getBean("person", Person.class));
        log.debug("{}", ac.getBean("person1", Person.class));
    }
}

@Configuration
class MainCfg {

    @Bean
    @Conditional(CustomCondition1.class)
    public Person person() {
        return new Person();
    }
    @Bean
    @Conditional(CustomCondition2.class)
    public Person person1() {
        return new Person();
    }
}

@Data
class Person {
    private String name;
    private int age;
}

@Slf4j
class CustomCondition1 implements Condition {
    @Override
    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
        log.debug("自定义condition返回true,使用该注解部分应该被加载!");
        return true;
    }
}

@Slf4j
class CustomCondition2 implements Condition {
    @Override
    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
        log.debug("自定义condition返回false,使用该注解的部分不因该被加载!");
        return false;
    }
}

 

@Conditional与Condition接口

原文:https://www.cnblogs.com/kitor/p/14715121.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!