<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 167,  comments - 30,  trackbacks - 0
    Spring2.5繼續堅持了這個發展趨向,特別是為那些使用Java 5或更新版本java的開發人員提供了進一步簡化而強大的新特性。這些新特性包括:注解驅動的依賴性注入(annotation-driven dependency injection),使用注解而非XML元數據來自動偵測classpath上的Spring組件,注解對生命周期方法的支持,一個新的web控制器模型將請求映射到加注解的方法上,在測試框架中支持Junit4,Spring XML命名空間的新增內容,等等。
    項目中使用的spring2.5版本。如果想要使用spring提供的注解功能.
    applicationContext.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:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-2.5.xsd">
    <!-- Using annontations -->
    <context:annotation-config></context:annotation-config>
    新增以下三項才可以使用注解功能
    xmlns:context="http://www.springframework.org/schema/context"
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-2.5.xsd">
    <context:annotation-config></context:annotation-config>
    或者<bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor"/> 注冊一個單獨的Spring post-processor.
    一個沒有實現任何接口的業務類,配置如下:
    public class LogService extends Service{
    public LogBiz(){}
    @Resource //默認按名稱查找bean. 如果找不到,則按類型匹配bean.
    private BaseDao dao;
    }
    tomcat啟動錯誤1:
    Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'logBiz': Injection of resource fields failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [com.ccms.base.dao.BaseDAO] is defined: expected single matching bean but found 40: [baseDAO, loginDAO, logDAO]
    at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessAfterInstantiation(CommonAnnotationBeanPostProcessor.java:291)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:876)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:437)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:383)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:353)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:245)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:169)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:242)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269)
    ... 32 more
    Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [com.ccms.base.dao.BaseDAO] is defined: expected single matching bean but found 40: [baseDAO, loginDAO, logDAO]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:583)
    at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:418)
    at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$ResourceElement.getResourceToInject(CommonAnnotationBeanPostProcessor.java:497)
    at org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:145)
    at org.springframework.beans.factory.annotation.InjectionMetadata.injectFields(InjectionMetadata.java:79)
    at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessAfterInstantiation(CommonAnnotationBeanPostProcessor.java:288)
    ... 42 more
    使用@Resource默認按名稱查找bean. 如果找不到,則按類型匹配bean.而名稱dao沒有找到,所以會根據BaseDAO匹配,但是BaseDAO是一個接口:
    <bean id="loginDAO" class="com.test.dao.loginDAO" parent="baseDAO" />
    <bean id="logDAO" class="com.test.dao.logDAO" parent="baseDAO" />
    <bean id="baseDAO" class="com.ccms.base.dao.BaseDAOImpl">
    <property name="sessionFactory">
    <ref bean="sessionFactory" />
    </property>
    <property name="simpleJdbcTemplate">
    <ref bean="simpleJdbcTemplate" />
    </property>
    </bean>
    有兩個實現了BaseDAO接口的類,所以spring就不知道應該使用哪一個了。直接拋出異常。
    解決方法1:
    我們可以看到baseDAO名稱是唯一的, 所以如果想要按照名稱匹配,則直接寫baseDAO就可以了
    @Resource
    private BaseDAO baseDAO;
    解決方法2:
    @Autowired //默認按照類型匹配,同樣應為有兩個子類bean,所以拋出異常。
    @Qualifier("loginDAO") //限定bean
    private BaseDAO dao;
    參考博客:
    http://doc.chinaunix.net/java/200801/240056.shtml
    http://stackoverflow.com/questions/10534053/autowiring-two-beans-implementing-same-interface-how-to-set-default-bean-to-au
    posted on 2013-03-21 10:22 David1228 閱讀(2503) 評論(0)  編輯  收藏 所屬分類: Spring

    <2013年3月>
    242526272812
    3456789
    10111213141516
    17181920212223
    24252627282930
    31123456

    常用鏈接

    留言簿(4)

    隨筆分類

    隨筆檔案

    文章檔案

    新聞分類

    新聞檔案

    相冊

    收藏夾

    Java

    Linux知識相關

    Spring相關

    云計算/Linux/虛擬化技術/

    友情博客

    多線程并發編程

    開源技術

    持久層技術相關

    搜索

    •  

    積分與排名

    • 積分 - 359721
    • 排名 - 154

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲?V无码乱码国产精品| 亚洲国产精彩中文乱码AV| 四虎影院免费视频| 国产成人亚洲精品91专区高清| 亚洲中文字幕无码爆乳av中文| 久9这里精品免费视频| 亚洲av片不卡无码久久| 免费福利在线播放| 久久香蕉国产线看观看亚洲片| h片在线免费观看| 免费一级全黄少妇性色生活片 | 久久久久亚洲精品天堂久久久久久| 暖暖在线视频免费视频| 亚洲精品国产高清在线观看| 国产亚洲精品美女久久久| 免费a级毛片无码a∨蜜芽试看 | 午夜视频免费成人| 最新国产乱人伦偷精品免费网站 | 亚洲女同成av人片在线观看| 91在线视频免费91| 亚洲综合色丁香婷婷六月图片 | 国产啪亚洲国产精品无码| 国产精品色拉拉免费看| a级毛片免费网站| 亚洲中文精品久久久久久不卡| 亚洲人成图片小说网站| 国产无遮挡裸体免费视频| 99精品免费观看| 国产精品无码免费专区午夜| 亚洲欧美日韩综合久久久| 亚洲v国产v天堂a无码久久| 91九色精品国产免费| a级精品九九九大片免费看| 国产精品亚洲小说专区| 亚洲另类自拍丝袜第1页| 亚洲宅男天堂在线观看无病毒| 日韩免费观看视频| 国产电影午夜成年免费视频| 久久青草免费91观看| 91视频免费观看| 一区二区三区在线免费|