SpringBoot自定义条件注解配置

本篇介绍下,如何经过springboot的自定义条件配置,控制Bean的建立html

  • 介绍下开发环境
    • JDK版本1.8
    • springboot版本是1.5.2
    • 开发工具为 intellij idea(2018.2)
    • 开发环境为 15款MacBook Pro

前言

不少时候,咱们在公司用springboot做为基础框架开发项目的时候,会碰见建立某个Bean的时候,须要一些条件来做为前置,这时候,Spring默认的条件配置,已经不知足条件了,须要自定义条件配置,这时候咱们能够经过条件配置接口,自定义规则来判断是否建立Beanjava


如何弄自定义条件配置呢?

此次,咱们只在条件注解项目内的 @Conditional 配合 @Bean 作演示,没看过上篇 SpringBoot条件配置的同窗,能够点击这里点我,直达SpringBoot条件配置git

  1. 咱们先建立三个普通的类,前置条件为,要建立SpecialC,须要SpecialA跟SpecialB同时存在IOC中spring

    @Component
    public class SpecialA {
    
        private static final Logger LOGGER = LoggerFactory.getLogger(SpecialA.class);
    
        public SpecialA() {
            LOGGER.info("建立 specialA");
        }
    }
    
    @Component
    public class SpecialB {
    
        private static final Logger LOGGER = LoggerFactory.getLogger(SpecialB.class);
    
        public SpecialB() {
            LOGGER.info("建立 specialB");
        }
    }
    
    @Component
    public class SpecialC {
        private static final Logger LOGGER = LoggerFactory.getLogger(SpecialC.class);
    
        public SpecialC() {
            LOGGER.info("建立 specialC");
        }
    }
  2. 建立一个自定义配置的配置类springboot

    /**
     *  自定义的条件注解,根据自定义规则,
     *  配置是否生成某些bean
     *  @author hexiaowu
     *
     */
    public class SpecialConditionAnnotion implements Condition {
        @Override
        public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
    
            ConfigurableListableBeanFactory beanFactory = context.getBeanFactory();
            // 若是存在 specialA跟specialB 则返回true
            if(beanFactory.containsBean("specailA")&&beanFactory.containsBean("specialB")){
                return true;
            }
    
    
            return false;
        }
    }
  3. 而后咱们在启动类,增长以下配置框架

    @SpringBootApplication(scanBasePackages = "com.example")
    public class DemoApplication{
    
    
    	public static void main(String[] args) {
    		SpringApplication.run(DemoApplication.class, args);
    	}
    
        // 新增配置
    	@Bean
    	// 指定自定义的条件判断注解Class
    	@Conditional(SpecialConditionAnnotion.class)
    	public SpecialC buildSpecialC(){
    		return new SpecialC();
    	}
    }
  4. 而后咱们启动启动类,看到以下日志打印,说明条件配置生效了ide

    2018-10-26 23:36:20.589  INFO 5602 --- [           main] c.e.c.specialCondition.SpecialA          : 建立 specialA
    2018-10-26 23:36:20.591  INFO 5602 --- [           main] c.e.c.specialCondition.SpecialB          : 建立 specialB
    2018-10-26 23:36:20.592  INFO 5602 --- [           main] c.e.c.specialCondition.SpecialC          : 建立 specialC


关于条件配置

使用自定义条件配置,咱们须要配置的东西不多,也就新增一个实现Condition接口的类spring-boot

自定义条件配置官方文档地址以下: 条件配置官方文档工具


结束语

本次介绍的,只是简单的自定义条件注解的配置,复杂的,须要各位看官本身根据业务来进行配置开发工具

项目源码,我已经上传到gitee 须要的朋友,能够本身点击查看 springboot条件配置

到这,文章就结束了!

以上,均为本人测试而得出的结果,可能会有出入,或者错误,欢迎指正

欢迎转载,请注明出处跟做者,谢谢!

相关文章
相关标签/搜索