欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何使用@ConditionalOnExpression決定是否生效注釋

 更新時(shí)間:2021年06月22日 10:07:59   作者:從心歸零  
這篇文章主要介紹了如何使用@ConditionalOnExpression決定是否生效注釋的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

@ConditionalOnExpression決定是否生效注釋

因?yàn)橛昧撕脦滋紫㈥?duì)列,我想在配置文件中配置如何開關(guān)切換消息隊(duì)列。

生產(chǎn)者還好,我只要決定讀取配置文件決定用哪個(gè)生產(chǎn)者發(fā)送消息就行,但是rabbitmq的消費(fèi)者是用注解啟動(dòng)的,所以這個(gè)時(shí)候就用到了@ConditionalOnExpression

#消費(fèi)者總開關(guān),0關(guān)1開
mq.cumsumer.enabled=1
#rocketmq消費(fèi)者開關(guān),true開啟,false關(guān)閉
rocketmq.comsumer.enabled=false
#rabbitmq消費(fèi)者開關(guān),true開啟,false關(guān)閉
rabbitmq.comsumer.enabled=true
@Component
@RabbitListener(queues = "monitorDataQueue")
@ConditionalOnExpression("${mq.cumsumer.enabled:0}==1&&${rabbitmq.comsumer.enabled:false}")

布爾值和數(shù)字都還好說,但是字符串相等我搞了半天都不行,最后終于找到了資料

https://stackoverflow.com/questions/26451321/spring-boot-conditionalonproperty-or-conditionalonexpression

#選擇消費(fèi)者,rocketmq,rabbitmq
mq.comsumer=rabbitmq
@Component
@RabbitListener(queues = "monitorDataQueue")
@ConditionalOnExpression("'${mq.comsumer}'.equals('rabbitmq')")

一般來說這三種用法已經(jīng)很靈活了,應(yīng)該夠用了

注意

${rabbitmq.consumer.enabled:false}

代表的是當(dāng)

rabbitmq.consumer.enabled

不存在時(shí)默認(rèn)為后面的值,所以如果是boolean值的話直接使用

${rabbitmq.comsumer.enabled}

就行啦~

@ConditionalOnExpression 控制是否初始bean

我們有時(shí)候會(huì)遇到一些bean希望通過注冊(cè)中心控制是否被初始化,@ConditionalOnExpression可以幫我們辦到。這里寫過小例子。

1、這個(gè)配置是我們上傳文件指定臨時(shí)目錄的配置

這里通過這個(gè)查看是否注入成功。在我們想要注入控制注解添加 @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、在啟動(dòng)類添加如下代碼進(jìn)行測試

@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、啟動(dòng)為Application類,說明@Bean將其注入

在這里插入圖片描述

4、當(dāng)在配置文件application.properties中寫 is.inject=false時(shí)

此時(shí)結(jié)果為,說明@Bean并沒有將配置中的注入

在這里插入圖片描述

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java生成XML的方法【附demo源碼下載】

    java生成XML的方法【附demo源碼下載】

    這篇文章主要介紹了java生成XML的方法,涉及java針對(duì)xml格式文件的簡單操作技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下
    2016-12-12
  • SpringBoot整合EasyExcel實(shí)現(xiàn)批量導(dǎo)入導(dǎo)出

    SpringBoot整合EasyExcel實(shí)現(xiàn)批量導(dǎo)入導(dǎo)出

    這篇文章主要為大家詳細(xì)介紹了SpringBoot整合EasyExcel實(shí)現(xiàn)批量導(dǎo)入導(dǎo)出功能的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),需要的小伙伴可以參考下
    2024-03-03
  • 淺談Maven包沖突的原理及解決方法

    淺談Maven包沖突的原理及解決方法

    這篇文章主要介紹了淺談Maven包沖突的原理及解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • java實(shí)現(xiàn)24點(diǎn)游戲

    java實(shí)現(xiàn)24點(diǎn)游戲

    每次取出4張牌,使用加減乘除,第一個(gè)能得出24者為贏,這篇文章主要就為大家詳細(xì)介紹了java實(shí)現(xiàn)24點(diǎn)游戲,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 2022年最新java?8?(?jdk1.8u321)安裝圖文教程

    2022年最新java?8?(?jdk1.8u321)安裝圖文教程

    這篇文章主要介紹了2022年最新java?8?(?jdk1.8u321)安裝圖文教程,截止2022年1月,官方出的jdk1.8目前已更新到8u321的版本,本文通過圖文并茂的形式給大家介紹安裝過程,需要的朋友可以參考下
    2022-08-08
  • spring boot打jar包發(fā)布的方法

    spring boot打jar包發(fā)布的方法

    這篇文章主要介紹了spring boot打jar包發(fā)布的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-06-06
  • Java enum實(shí)現(xiàn)自增賦值方式

    Java enum實(shí)現(xiàn)自增賦值方式

    這篇文章主要介紹了Java enum實(shí)現(xiàn)自增賦值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Arrays.sort(arr)是什么排序及代碼邏輯

    Arrays.sort(arr)是什么排序及代碼邏輯

    在學(xué)習(xí)過程中觀察到Arrays.sort(arr)算法可以直接進(jìn)行排序,但不清楚底層的代碼邏輯是什么樣子,今天通過本文給大家介紹下Arrays.sort(arr)是什么排序,感興趣的朋友一起看看吧
    2022-02-02
  • Java8 Supplier接口和Consumer接口原理解析

    Java8 Supplier接口和Consumer接口原理解析

    這篇文章主要介紹了Java8 Supplier接口和Consumer接口原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • SpringBoot Actuator未授權(quán)訪問漏洞修復(fù)詳解

    SpringBoot Actuator未授權(quán)訪問漏洞修復(fù)詳解

    這篇文章主要介紹了SpringBoot Actuator未授權(quán)訪問漏洞修復(fù)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08

最新評(píng)論