日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spring map使用annotation泛型注入问题分析

發布時間:2023/12/10 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring map使用annotation泛型注入问题分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.



? 今天在整一個spring的ioc學習demo,碰到一個問題,居然@Autowire在set方法注入map時,map的key類型不能為String之外的其他類型,具體看下面問題

??

??

@Autowiredpublic void setTypeMap(Map<Integer,String> typeMap) {this.typeMap = typeMap;}?

? xml注入配置,即時在map上加上key和value的類型也不行。

??

<property name="typeMap"><map key-type="java.lang.Integer" value-type="String"><entry key="1"><value>COO)</value></entry><entry key="2"><value>CFO</value></entry><entry key="3"><value>CEO</value></entry></map></property>?

? 報錯:

? ?

Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void org.springweb.service.impl.HelloServiceImpl.setTypeMap(java.util.Map); nested exception is org.springframework.beans.FatalBeanException: Key type [class java.lang.Integer] of map [java.util.Map] must be assignable to [java.lang.String]at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:589)at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:84)at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:282)... 13 more Caused by: org.springframework.beans.FatalBeanException: Key type [class java.lang.Integer] of map [java.util.Map] must be assignable to [java.lang.String]at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:761)at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:703)at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:547)?

查看spring的代碼

? ?

else if (Map.class.isAssignableFrom(type) && type.isInterface()) {Class keyType = descriptor.getMapKeyType();if (keyType == null || !String.class.isAssignableFrom(keyType)) {if (descriptor.isRequired()) {throw new FatalBeanException("Key type [" + keyType + "] of map [" + type.getName() +"] must be assignable to [java.lang.String]");}return null;}?

?

? 也就是spring使用Autowired進入注入時,map的key類型只能為string,但是

? ?如果我使用set方法注入后者構造方法注入,map的可以是可以自動轉為integer的。


? ?set方法注入,不要在set方法上使用antowired

? ?

public void setTypeMap(Map<Integer,String> typeMap) {this.typeMap = typeMap;}?

//構造方法注入public HelloServiceImpl(String greetting,Map<Integer,String> typeMap){this.greetting = greetting;this.typeMap = typeMap;System.out.println("call HelloServiceImpl constructor" + this.greetting);}??<constructor-arg type="Map" index="1"><map><entry key="1"><value>COO</value></entry><entry key="2"><value>CFO</value></entry><entry key="3"><value>CEO</value></entry></map></constructor-arg>?

? ?可以參考http://forum.springsource.org/showthread.php?105558-Autowired-injection-of-a-Map

? 今天在整一個spring的ioc學習demo,碰到一個問題,居然@Autowire在set方法注入map時,map的key類型不能為String之外的其他類型,具體看下面問題

??

??

@Autowiredpublic void setTypeMap(Map<Integer,String> typeMap) {this.typeMap = typeMap;}?

? xml注入配置,即時在map上加上key和value的類型也不行。

??

<property name="typeMap"><map key-type="java.lang.Integer" value-type="String"><entry key="1"><value>COO)</value></entry><entry key="2"><value>CFO</value></entry><entry key="3"><value>CEO</value></entry></map></property>?

? 報錯:

? ?

Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void org.springweb.service.impl.HelloServiceImpl.setTypeMap(java.util.Map); nested exception is org.springframework.beans.FatalBeanException: Key type [class java.lang.Integer] of map [java.util.Map] must be assignable to [java.lang.String]at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:589)at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:84)at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:282)... 13 more Caused by: org.springframework.beans.FatalBeanException: Key type [class java.lang.Integer] of map [java.util.Map] must be assignable to [java.lang.String]at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:761)at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:703)at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:547)?

查看spring的代碼

? ?

else if (Map.class.isAssignableFrom(type) && type.isInterface()) {Class keyType = descriptor.getMapKeyType();if (keyType == null || !String.class.isAssignableFrom(keyType)) {if (descriptor.isRequired()) {throw new FatalBeanException("Key type [" + keyType + "] of map [" + type.getName() +"] must be assignable to [java.lang.String]");}return null;}?

?

? 也就是spring使用Autowired進入注入時,map的key類型只能為string,但是

? ?如果我使用set方法注入后者構造方法注入,map的可以是可以自動轉為integer的。


? ?set方法注入,不要在set方法上使用antowired

? ?

public void setTypeMap(Map<Integer,String> typeMap) {this.typeMap = typeMap;}?

//構造方法注入public HelloServiceImpl(String greetting,Map<Integer,String> typeMap){this.greetting = greetting;this.typeMap = typeMap;System.out.println("call HelloServiceImpl constructor" + this.greetting);}??<constructor-arg type="Map" index="1"><map><entry key="1"><value>COO</value></entry><entry key="2"><value>CFO</value></entry><entry key="3"><value>CEO</value></entry></map></constructor-arg>?

? ?可以參考http://forum.springsource.org/showthread.php?105558-Autowired-injection-of-a-Map

轉載于:https://www.cnblogs.com/zhwj184/archive/2013/04/15/3027417.html

總結

以上是生活随笔為你收集整理的spring map使用annotation泛型注入问题分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品久久久久久久久 | 久草视频在线免费 | 被黑人猛躁10次高潮视频 | 激情超碰 | 国产精品久久久无码一区 | 青青草久久爱 | 欧美超碰在线观看 | 国产又爽又猛又粗的视频a片 | 青青草久 | 亚洲蜜桃av | 亚洲精品高清视频在线观看 | jzzjzz日本丰满成熟少妇 | 性色av无码久久一区二区三区 | 欧美日韩一区二区不卡 | 黄色大片在线播放 | 欧美人体一区二区三区 | 日本美女一区二区三区 | 你操综合| 色91精品久久久久久久久 | 婷婷色av | 免费网站在线观看黄色 | 日本精品视频在线观看 | 日本午夜免费福利视频 | 日本h在线观看 | 一二三不卡 | 色牛av | 日韩精品一二 | 亚洲区一区二区三区 | 精品国产乱码久久久久久108 | 澳门久久久 | www.四虎. | 国产精品1区2区3区 在线看黄的网站 | 日本一级淫片1000部 | 国产 丝袜 欧美中文 另类 | 9久9久9久女女女九九九一九 | 久久99精品国产麻豆91樱花 | 欧美 日韩 人妻 高清 中文 | 超碰人人人人 | 亚洲综合在线第一页 | 97成人精品视频在线观看 | 欧美性潮喷xxxxx免费视频看 | 看片网站在线观看 | 国产精品久久久久久久久动漫 | 一区小视频| 成人免费毛片嘿嘿连载视频 | 女人18片毛片60分钟 | 老头老太吃奶xb视频 | 日韩在线播放一区二区 | 亚洲av无码专区在线播放中文 | 欧美日韩伊人 | 国内毛片毛片毛片毛片毛片 | 8050午夜一级毛片久久亚洲欧 | 黄色免费在线观看视频 | 欧美乱码视频 | 日韩在线电影一区二区 | 国产三级精品三级 | 少妇毛片视频 | 九七影院在线观看免费观看电视 | 老女人性生活视频 | 欧美精品v| 这里只有精品视频 | 久久成年网 | 亚洲网站免费看 | 久久亚洲成人 | 久久av高潮av无av萌白 | 脱美女衣服亲摸揉视频 | 蜜桃久久精品成人无码av | 国产福利资源在线 | 日本一级大片 | 日本xxxx人 | 久久精品一区二区 | 国产淫视 | 国产裸体网站 | 伊人久综合 | 成人妇女淫片aaaa视频 | 久久性视频 | 亚洲九九视频 | 国产日韩欧美中文 | 18禁一区二区三区 | 日本高清不卡码 | 亚洲av电影天堂男人的天堂 | 天天超碰 | 国内成人自拍 | 疯狂撞击丝袜人妻 | 最新av网站在线观看 | 又大又长粗又爽又黄少妇视频 | 艳妇臀荡乳欲伦交换在线看 | 国产成人综合在线视频 | 欧美成一区二区三区 | 天堂网久久 | 久久精品视频在线 | 中文字幕在线观看视频网站 | 麻豆av一区 | 女人床技48动态图 | 在线观看免费视频一区 | 成人一级生活片 | 欧美另类v| 一区www| 97伊人网 |