Spring指定bean在哪個應(yīng)用加載(示例詳解)
更新時間:2023年08月05日 11:23:49 作者:kenick
本文通過實例代碼介紹了Spring指定bean在哪個應(yīng)用加載,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
1.背景
某項目,spring架構(gòu),有2個不同的WebAppApplication入口,大部分service類共用,小部分類有區(qū)別,只需要在一個應(yīng)用中加載,不需要在另一個應(yīng)用中加載.
2.實現(xiàn)代碼
自定義限制注解
package mis.shared.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* @description 限制bean在指定application下加載
* webAppApplication
* webSmartApplication
* @date 2023/08/04
*/
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface LimitBeanLoad {
String value() default "webSmartApplication";
}實現(xiàn)Spring的Condition接口
package mis.shared.annotation;
import com.bestvike.linq.Linq;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.core.annotation.MergedAnnotation;
import org.springframework.core.type.AnnotatedTypeMetadata;
/**
* @description spring加載bean條件類
* @date 2023/08/04
*/
@Slf4j
public class SpringLoadBeanCondition implements Condition {
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
try {
//獲取注解中指定的應(yīng)用名稱
MergedAnnotation<LimitBeanLoad> limitAnnotation = metadata.getAnnotations().get(LimitBeanLoad.class);
String annotationAppName = (String) limitAnnotation.getValue("value").orElse(null);
//判斷當前應(yīng)用是否符合指定
String[] beanDefinitionNames = context.getRegistry().getBeanDefinitionNames();
long limitAppCount = Linq.of(beanDefinitionNames).where(p -> p.equals(annotationAppName)).stream().count();
return limitAppCount > 0;
} catch (Exception e) {
}
return true;
}
}使用注解

到此這篇關(guān)于Spring指定bean在哪個應(yīng)用加載的文章就介紹到這了,更多相關(guān)Spring指定bean加載內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java中使用@CrossOrigin和Proxy解決跨域問題詳解
這篇文章主要介紹了Java中使用@CrossOrigin和Proxy解決跨域問題詳解,在Web開發(fā)中,如果前端頁面和后端接口不在同一個域名下,就會發(fā)生跨域請求的問題,同源策略是瀏覽器的一種安全策略,它限制了來自不同源的客戶端腳本在瀏覽器中運行時的交互,需要的朋友可以參考下2023-12-12

