spring高階裝配 條件化的bean

2021-09-25 20:19:09 字數 1178 閱讀 9161

@conditional註解的使用

@bean

@conditional(magicexistscondition.class)

public magicbean magicbean()

@conditional將會通過condition介面進行條件對比

public inte***ce condition
package com.habuma.restfun;

import org.springframework.context.annotation.condition;

import org.springframework.context.annotation.conditioncontext;

import org.springframework.core.type.annotatedtypemetadata;

import org.springframework.util.classutils;

public class magicexistscondition implements condition

}

其中conditioncontext是乙個介面,如下:

public inte***ce conditioncontext
通過getregistry()返回的beandefinitionregistry可以檢查bean的定義

通過getbeanfactory()返回的configurablelistablebeanfactory檢查bean是否存在,甚至探查bean的屬性

通過getresourceloader返回的resourceloader檢查所載入的資源

通過getclassloader()返回的classloader檢查類是否存在

annotatedtypemetadata則能夠讓我們檢查帶有@bean註解的方法上還有什麼其他的註解.annotatedtypemetadata也是乙個介面,如下:

public inte***ce annotatedtypemetadata
通過isannotated()方法,我們能夠判斷帶有@bean註解的方法是不是還有其他特定的註解.借助其他的方法,我們能夠檢查@bean註解的方法上其他註解的屬性.

Spring高階裝配 二 條件化的bean

如果你希望乙個bean在特定的條件下才會出現 在spring 4之前,很難實現這種級別的條件化配置,但是spring4引入了乙個新的 conditional註解,它可以用到帶有 bean註解的方法上。如果給定的條件計算結果為true,就會建立這個bean,否則的話,這個bean會被忽略。示例 設定了...

spring boot 條件化決定是否裝配bean

1.根據 spring.profiles.active 屬性值決定 configuration profile dev public class testconfig 註解 profile 當spring.profiles.active 值為 時裝配 2.根據condition裝配 configur...

spring實戰 條件裝配bean

在做大型專案時,我們的系統會有多個執行環境,如開發人員自己的本地環境dev,測試人員的測試環境sit,上線前的預生產環境pre,線上環境prd 在不同環境中我們可能需要不同的配置,如資料庫配置,mq配置等,在不同的環境都有相應的不同的配置,這時候我們需要根據不同的環境來建立不同的配置 強大的spri...