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

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

Spring @Value注解失效問題解決方案

瀏覽:116日期:2023-09-12 13:06:27

項目使用的是SSM體系,spring的配置如下,配置沒問題,因為我發現其他文件中的@Value可以使用,只有一處@Value失效了。

spring-servlet.xml

<?xml version='1.0' encoding='UTF-8'?><beans xmlns='http://www.springframework.org/schema/beans' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:mvc='http://www.springframework.org/schema/mvc' xmlns:context='http://www.springframework.org/schema/context' xmlns:aop='http://www.springframework.org/schema/aop' xmlns:tx='http://www.springframework.org/schema/tx' xmlns:websocket='http://www.springframework.org/schema/websocket' xsi:schemaLocation='http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/websocket http://www.springframework.org/schema/websocket/spring-websocket.xsd'> <context:property-placeholder ignore-unresolvable='true' location='classpath*:config.properties' /> <!-- 使用Annotation自動注冊Bean,Controllerller --> <context:component-scan base-package='com.magicmed.ecg' use-default-filters='false'> <!--base-package 如果多個,用“,”分隔--> <context:include-filter type='annotation' expression='org.springframework.stereotype.Controller' /> </context:component-scan> <!-- 自定義注解實現日志記錄 --> <aop:aspectj-autoproxy /> <mvc:annotation-driven /> <import resource='classpath:mybatis-spring.xml' /> <import resource='classpath:mail-spring.xml' /> <import resource='classpath:rabbitmq-spring.xml' /></beans>

spring.xml

<?xml version='1.0' encoding='UTF-8'?><beans xmlns='http://www.springframework.org/schema/beans' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.springframework.org/schema/context http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd'> <bean > <property name='locations' > <list> </list> </property> <property name='ignoreUnresolvablePlaceholders' value='true' /> </bean> <!-- 導入配置文件--> <import resource='classpath*:mybatis-spring.xml' /> <import resource='classpath*:mail-spring.xml' /> <import resource='classpath*:rabbitmq-spring.xml' /></beans>

失效的@Value是Parser這個父類的一個屬性上的注解,而Parser的兩個子類Parser1與Parser2繼承這個屬性;我的目的就是先用Parser執行一定得判斷邏輯——判斷版本號,如果是版本1就用Parser1讀取文件,如果是版本2就用Parser2讀取文件。經過我的測試,我發現Parser使用fileRoot屬性是不為null,也就是注入成功了,而Parser怎么也注入不成功,fileRoot的值為null。 代碼如下:

// parse@Componentpublic class Parser { @Value('${fileRoot}') protected String fileRoot; //文件根路徑 protected String getFilePath(String appuserId, String uri) { return fileRoot + appuserId + System.getProperty('file.separator')+ uri; } public Map<String, String> getXML_version(String appuserId, String uri) { Element root = null; try { Document document = new SAXReader().read(new File(getFilePath(appuserId, uri) + '.xml')); root = document.getRootElement(); //獲取根節點元素對象 } catch (DocumentException e) { e.printStackTrace(); } return root.element('XMLInfo').element('Version').getTextTrim(); } public Map<String, Object> read_xml(String appuserId, String uri) { return null; }}// parser1@Componentpublic class Parser1 extends Parser { @Override public Map<String, Object> read_xml(String appuserId, String uri) { try { InputStream in = new FileInputStream(new File(getFilePath(appuserId, uri) + '.xml')); } catch (IOException e) { e.printStackTrace(); } /** * 待處理的邏輯 */ return null; }}// parser2@Componentpublic class Parser2 extends Parser { @Override public Map<String, Object> read_xml(String appuserId, String uri) { try { InputStream in = new FileInputStream(new File(getFilePath(appuserId, uri) + '.xml')); } catch (IOException e) { e.printStackTrace(); } /** * 待處理的邏輯 */ return null; }}

@Servicepublic class testServiceImpl implements testService { @Autowired private Parser parser; public Integer test(String id, String uri) { Map<String,String> versionMap = parser.getXML_version(id,uri); if(versionMap.get('mv').equals('1')){ parser = new Parser1(); }else if(versionMap.get('mv').equals('2')){ parser = new Pparser2(); } parser.read_xml(id,uri); return null; }}

剛開始我也懷疑配置文件,也懷疑緩存的問題。后來我在網上查閱資料,找到這樣一段話,茅塞頓開:

原因是如果有注入bean的那個類,在被其他類作為對象引用的話(被調用)。這個被調用的類也必須選擇注解的方式,注入到調用他的那個類中,不能用 new出來做對象,new出來的對象再注入其他bean就會 發生獲取不到的現象。所以要被調用的javabean,都需要@service,交給Spring去管理才可以,這樣他就默認注入了。

于是我把代碼改成如下形式,注入成功了。

@Servicepublic class testServiceImpl implements testService { @Autowired private Parser parser; @Autowired private Parser1 parser1; @Autowired private Parser2 parser2; public Integer test(String id, String uri) { Map<String,String> versionMap = parser.getXML_version(id,uri); if(versionMap.get('mv').equals('1')){ parser = parser1; }else if(versionMap.get('mv').equals('2')){ parser = parser2; } parser.read_xml(id,uri); return null; }}

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

標簽: Spring
相關文章:
主站蜘蛛池模板: 油罐车_加油机_加油卷盘_加油机卷盘_罐车人孔盖_各类球阀_海底阀等车用配件厂家-湖北华特专用设备有限公司 | 首页-恒温恒湿试验箱_恒温恒湿箱_高低温试验箱_高低温交变湿热试验箱_苏州正合 | 天津蒸汽/热水锅炉-电锅炉安装维修直销厂家-天津鑫淼暖通设备有限公司 | ICP备案查询_APP备案查询_小程序备案查询 - 备案巴巴 | 右手官网|右手工业设计|外观设计公司|工业设计公司|产品创新设计|医疗产品结构设计|EMC产品结构设计 | 网站建设,北京网站建设,北京网站建设公司,网站系统开发,北京网站制作公司,响应式网站,做网站公司,海淀做网站,朝阳做网站,昌平做网站,建站公司 | 粉末包装机-给袋式包装机-全自动包装机-颗粒-液体-食品-酱腌菜包装机生产线【润立机械】 | 环讯传媒,永康网络公司,永康网站建设,永康小程序开发制作,永康网站制作,武义网页设计,金华地区网站SEO优化推广 - 永康市环讯电子商务有限公司 | 东莞动力锂电池保护板_BMS智能软件保护板_锂电池主动均衡保护板-东莞市倡芯电子科技有限公司 | 小型高低温循环试验箱-可程式高低温湿热交变试验箱-东莞市拓德环境测试设备有限公司 | 防火板_饰面耐火板价格、厂家_品牌认准格林雅| 山东太阳能路灯厂家-庭院灯生产厂家-济南晟启灯饰有限公司 | 博客-悦享汽车品质生活| 烟雾净化器-滤筒除尘器-防爆除尘器-除尘器厂家-东莞执信环保科技有限公司 | 卡诺亚轻高定官网_卧室系统_整家定制_定制家居_高端定制_全屋定制加盟_定制家具加盟_定制衣柜加盟 | 全自动包装秤_全自动上袋机_全自动套袋机_高位码垛机_全自动包装码垛系统生产线-三维汉界机器(山东)股份有限公司 | 云南成考网_云南成人高考报名网| 多功能三相相位伏安表-变压器短路阻抗测试仪-上海妙定电气 | 安规_综合测试仪,电器安全性能综合测试仪,低压母线槽安规综合测试仪-青岛合众电子有限公司 | 接地电阻测试仪[厂家直销]_电缆故障测试仪[精准定位]_耐压测试仪-武汉南电至诚电力设备 | 云杂志网-学术期刊-首页 | 充气膜专家-气膜馆-PTFE膜结构-ETFE膜结构-商业街膜结构-奥克金鼎 | 深圳工程师职称评定条件及流程_深圳职称评审_职称评审-职称网 | 一体化预制泵站-一体化提升泵站-一体化泵站厂家-山东康威环保 | 理化生实验室设备,吊装实验室设备,顶装实验室设备,实验室成套设备厂家,校园功能室设备,智慧书法教室方案 - 东莞市惠森教学设备有限公司 | 盛源真空泵|空压机-浙江盛源空压机制造有限公司-【盛源官网】 | 车牌识别道闸_停车场收费系统_人脸识别考勤机_速通门闸机_充电桩厂家_中全清茂官网 | 本安接线盒-本安电路用接线盒-本安分线盒-矿用电话接线盒-JHH生产厂家-宁波龙亿电子科技有限公司 | 东莞工厂厂房装修_无尘车间施工_钢结构工程安装-广东集景建筑装饰设计工程有限公司 | 精密钢管,冷拔精密无缝钢管,精密钢管厂,精密钢管制造厂家,精密钢管生产厂家,山东精密钢管厂家 | 潜水搅拌机-双曲面搅拌机-潜水推进器|奥伯尔环保 | 杭州中策电线|中策电缆|中策电线|杭州中策电缆|杭州中策电缆永通集团有限公司 | 防腐储罐_塑料储罐_PE储罐厂家_淄博富邦滚塑防腐设备科技有限公司 | 哈尔滨京科脑康神经内科医院-哈尔滨治疗头痛医院-哈尔滨治疗癫痫康复医院 | 深圳VI设计-画册设计-LOGO设计-包装设计-品牌策划公司-[智睿画册设计公司] | H型钢切割机,相贯线切割机,数控钻床,数控平面钻,钢结构设备,槽钢切割机,角钢切割机,翻转机,拼焊矫一体机 | 深圳激光打标机_激光打标机_激光焊接机_激光切割机_同体激光打标机-深圳市创想激光科技有限公司 深圳快餐店设计-餐饮设计公司-餐饮空间品牌全案设计-深圳市勤蜂装饰工程 | 东莞精密模具加工,精密连接器模具零件,自動機零件,冶工具加工-益久精密 | 成都茶楼装修公司 - 会所设计/KTV装修 - 成都朗煜装饰公司 | 东莞压铸厂_精密压铸_锌合金压铸_铝合金压铸_压铸件加工_东莞祥宇金属制品 | 单级/双级旋片式真空泵厂家,2xz旋片真空泵-浙江台州求精真空泵有限公司 |