电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Spring基于@Conditional條件化裝配bean

瀏覽:9日期:2023-09-10 10:09:07

一 前言

理解spring的如何根據條件裝配bean有助于我們更好使用springboot進行開發,和源碼理解;

@Conditional 裝配bean

思路如下

Spring中提供了@Conditional注解實現條件化是否裝配bean,這樣可以根據條件動態的裝配bean;

要判定@Conditional 注解是否該裝配bean還需要Condition 接口配合,我們只須實現 Condition 接口,重寫matches 方法;

根據matches方法返回的布爾值進行判定@Conditional是否需要裝配bean

實現過程如下

2.1 用戶類

用戶類用于配置類是否裝配該Bean

/** * @Author lsc * <p> </p> */public class User { private String userName;// 省略 set get}

2.2 Condition實現類

RuntimeExist 實現 Condition ,使用 conditionContext 獲取jvm 環境變量,如果存在則返回 true ,否則返回false;其中conditionContext還有如下方法

getRegistry():使用BeanDefinitionRegistry的檢查bean定義; getBeanFactory():使用ConfigurableListableBeanFactory檢查bean是否存在; getEnvironment():Environment環境變量 getResourceLoader():ResourceLoader加載的資源; getClassLoader():ClassLoader加載的類。

public class RuntimeExist implements Condition { public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) { // 獲取jvm 運行時環境 Environment environment = conditionContext.getEnvironment(); // 檢查 jvm 運行時環境是否存在屬性 return environment.containsProperty('java.runtime.name'); }}

2.3 用戶配置類

根據 RuntimeExist的 matches 方法的返回值 是否裝配bean; 這邊設置了屬性名稱 zszxz,以便于更好的測試;

/** * @Author lsc * <p> </p> */@Configurationpublic class UserConfig { @Bean // 根據 RuntimeExist的 matches 方法的返回值 是否裝配bean @Conditional(RuntimeExist.class) public User user(){ User user = new User(); user.setUserName('zszxz'); return user; }}

2.4 測試

由于 jvm 運行時環境存在 java.runtime.name 屬性 ,故會裝配成功,會打印出 zszxz ;

如果將 java.runtime.name 改為 任意jvm 運行時不存在的屬性 ,測試就會報異常;

@RunWith(SpringJUnit4ClassRunner.class)//創建spring應用上下文@ContextConfiguration(classes= UserConfig.class)//加載配置類public class ConditionTest { @Autowired User user; @Test public void test(){ // zszxz System.out.println(user.getUserName()); }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
主站蜘蛛池模板: 深圳市索富通实业有限公司-可燃气体报警器 | 可燃气体探测器 | 气体检测仪 | wika威卡压力表-wika压力变送器-德国wika代理-威卡总代-北京博朗宁科技 | 北京百度网站优化|北京网站建设公司-百谷网络科技 | 深圳标识制作公司-标识标牌厂家-深圳广告标识制作-玟璟广告-深圳市玟璟广告有限公司 | 礼仪庆典公司,礼仪策划公司,庆典公司,演出公司,演艺公司,年会酒会,生日寿宴,动工仪式,开工仪式,奠基典礼,商务会议,竣工落成,乔迁揭牌,签约启动-东莞市开门红文化传媒有限公司 | 章丘丰源机械有限公司 - 三叶罗茨风机,罗茨鼓风机,罗茨风机 | 武汉森源蓝天环境科技工程有限公司-为环境污染治理提供协同解决方案 | 湖南档案密集架,智能,物证,移动,价格-湖南档案密集架厂家 | 上海噪音治理公司-专业隔音降噪公司-中广通环保 | 重庆钣金加工厂家首页-专业定做监控电视墙_操作台 | 注浆压力变送器-高温熔体传感器-矿用压力传感器|ZHYQ朝辉 | 水稻烘干机,小麦烘干机,大豆烘干机,玉米烘干机,粮食烘干机_巩义市锦华粮食烘干机械制造有限公司 水环真空泵厂家,2bv真空泵,2be真空泵-淄博真空设备厂 | 卓能JOINTLEAN端子连接器厂家-专业提供PCB接线端子|轨道式端子|重载连接器|欧式连接器等电气连接产品和服务 | 桁架机器人_桁架机械手_上下料机械手_数控车床机械手-苏州清智科技装备制造有限公司 | 马尔表面粗糙度仪-MAHR-T500Hommel-Mitutoyo粗糙度仪-笃挚仪器 | IIS7站长之家-站长工具-爱网站请使用IIS7站长综合查询工具,中国站长【WWW.IIS7.COM】 | 阴离子聚丙烯酰胺价格_PAM_高分子聚丙烯酰胺厂家-河南泰航净水材料有限公司 | 量子管通环-自清洗过滤器-全自动反冲洗过滤器-沼河浸过滤器 | 大学食堂装修设计_公司餐厅效果图_工厂食堂改造_迈普装饰 | 学校用栓剂模,玻璃瓶轧盖钳,小型安瓿熔封机,实验室安瓿熔封机-长沙中亚制药设备有限公司 | 细胞染色-流式双标-试剂盒免费代做-上海研谨生物科技有限公司 | 好杂志网-首页 | 【ph计】|在线ph计|工业ph计|ph计厂家|ph计价格|酸度计生产厂家_武汉吉尔德科技有限公司 | 青岛美佳乐清洁工程有限公司|青岛油烟管道清洗|酒店|企事业单位|学校工厂厨房|青岛油烟管道清洗 插针变压器-家用电器变压器-工业空调变压器-CD型电抗器-余姚市中驰电器有限公司 | 集装袋吨袋生产厂家-噸袋廠傢-塑料编织袋-纸塑复合袋-二手吨袋-太空袋-曹县建烨包装 | Dataforth隔离信号调理模块-信号放大模块-加速度振动传感器-北京康泰电子有限公司 | 篷房[仓储-婚庆-展览-活动]生产厂家-江苏正德装配式帐篷有限公司 | 重庆中专|职高|技校招生-重庆中专招生网 | 箱式破碎机_移动方箱式破碎机/价格/厂家_【华盛铭重工】 | 压接机|高精度压接机|手动压接机|昆明可耐特科技有限公司[官网] 胶泥瓷砖胶,轻质粉刷石膏,嵌缝石膏厂家,腻子粉批发,永康家德兴,永康市家德兴建材厂 | 广东护栏厂家-广州护栏网厂家-广东省安麦斯交通设施有限公司 | 板式换热器_板式换热器价格_管式换热器厂家-青岛康景辉 | 滚珠丝杆升降机_螺旋升降机_丝杠升降机-德迈传动 | 回转炉,外热式回转窑,回转窑炉-淄博圣元窑炉工程有限公司 | 山楂片_雪花_迷你山楂片_山楂条饼厂家-青州市丰源食品厂 | 闭端端子|弹簧螺式接线头|防水接线头|插线式接线头|端子台|电源线扣+护线套|印刷电路板型端子台|金笔电子代理商-上海拓胜电气有限公司 | nalgene洗瓶,nalgene量筒,nalgene窄口瓶,nalgene放水口大瓶,浙江省nalgene代理-杭州雷琪实验器材有限公司 | Q361F全焊接球阀,200X减压稳压阀,ZJHP气动单座调节阀-上海戎钛 | 石家庄救护车出租_重症转院_跨省跨境医疗转送_活动赛事医疗保障_康复出院_放弃治疗_腾康26年医疗护送转诊团队 | 塑胶地板-商用PVC地板-pvc地板革-安耐宝pvc塑胶地板厂家 | 沈阳真空机_沈阳真空包装机_沈阳大米真空包装机-沈阳海鹞真空包装机械有限公司 |