@ConditionalOnExpression 控制是否初始bean

我们有时候会遇到一些bean希望通过注册中心控制是否被初始化,@ConditionalOnExpression可以帮我们办到。这里写过小例子。

1、这个配置是我们上传文件指定临时目录的配置,这里通过这个查看是否注入成功。在我们想要注入控制注解添加 @ConditionalOnExpression("${is.inject:true}"),通过配置文件来控制是否注入。

@Configuration
public class PropertyConfig {

    @Bean
    @ConditionalOnExpression("${is.inject:true}")
    public MultipartConfigElement multipartConfigElement() {
        MultipartConfigFactory factory = new MultipartConfigFactory();
        factory.setLocation("C:\\Users\\Administrator\\Desktop\\deploy");
        return factory.createMultipartConfig();
    }
}

2、在启动类添加如下代码进行测试

@SpringBootApplication
public class DynamicElasticjobApplication implements CommandLineRunner {

    public static void main(String[] args) {
        SpringApplication.run(DynamicElasticjobApplication.class, args);
    }

    @Autowired
    private ApplicationContext applicationContext;
    @Override
    public void run(String... args)  {
        MultipartConfigElement bean = applicationContext.getBean(MultipartConfigElement.class);
        System.out.println("::::::::::::::"+bean.getLocation());
    }
}

3、启动为Application类,说明@Bean将其注入。

在这里插入图片描述
4、当在配置文件application.properties中写 is.inject=false时
此时结果为,说明@Bean并没有将配置中的注入
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章