隨筆-124  評(píng)論-194  文章-0  trackbacks-0
          有時(shí)候,在SPRING中兩個(gè)類互相含有對(duì)方的聲明,一般情況這是不允許并且極可能是有錯(cuò)誤的。
          會(huì)報(bào)這個(gè)錯(cuò):
          org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name ‘***’: Bean with name ‘***’ has been injected into other beans [***, ***]in its raw version as part of a circular reference,

          but has eventually been wrapped (for example as part of auto-proxy creation). This means that said other beans do not use the final version of the bean. This is often the result of over-eager type matching - consider using ‘getBeanNamesOfType’ with the ‘allowEagerInit’ flag turned off, for example.


          但有時(shí)候這正是我們想要的,考慮這種情況:
          我們用一個(gè)ManagerFactory來(lái)包含所有Manager的聲明,以便在程序中用到多個(gè)Manager的地方,一個(gè)入口集中訪問(wèn)。但是,可能某個(gè)Manager本身就需要用到其它幾個(gè)Manager,進(jìn)而用到ManagerFactory。這時(shí),我們可以這樣聲明即可:

           <bean id="managerFactory" class="common.utils.ManagerFactory" lazy-init="true"/>
          posted on 2008-02-24 10:13 我愛(ài)佳娃 閱讀(38435) 評(píng)論(11)  編輯  收藏 所屬分類: Spring

          評(píng)論:
          # re: SPRING循環(huán)依賴(circular reference)的解決方法 2008-02-24 10:48 | 完美世界私服
          <bean id="managerFactory" class="common.utils.ManagerFactory" lazy-init="true"/>
          ???????  回復(fù)  更多評(píng)論
            
          # re: SPRING循環(huán)依賴(circular reference)的解決方法 2008-02-24 20:39 | 我愛(ài)佳娃
          即在循環(huán)依賴的BEAN定義中,加入屬性值:lazy-init="true",只需有一方A是延遲初始化,另一邊B即不會(huì)因?yàn)锳又指向自己而出現(xiàn)上述錯(cuò)誤。  回復(fù)  更多評(píng)論
            
          # re: SPRING循環(huán)依賴(circular reference)的解決方法[未登錄](méi) 2008-07-12 02:39 | james
          你測(cè)試過(guò)嗎,你的spring版本是多少?
          在2.0.8下,你即使加了lazy-init="true",也不行  回復(fù)  更多評(píng)論
            
          # re: SPRING循環(huán)依賴(circular reference)的解決方法 2008-07-13 11:41 | 我愛(ài)佳娃
          我所舉例子,即我的程序代碼,一直工作很好。
          MAVEN的SPRING配置片斷:
          <spring.version>2.5.1</spring.version>

          <!-- spring begin -->
          <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-core</artifactId>
          <version>${spring.version}</version>
          </dependency>
          <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-beans</artifactId>
          <version>${spring.version}</version>
          </dependency>
          <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context</artifactId>
          <version>${spring.version}</version>
          </dependency>
          <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context-support</artifactId>
          <version>${spring.version}</version>
          </dependency>
          <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-aop</artifactId>
          <version>${spring.version}</version>
          </dependency>
          <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-jdbc</artifactId>
          <version>${spring.version}</version>
          </dependency>
          <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-test</artifactId>
          <version>${spring.version}</version>
          <scope>test</scope>
          </dependency>
          <dependency>
          <groupId>aspectj</groupId>
          <artifactId>aspectjweaver</artifactId>
          <version>1.5.3</version>
          </dependency>
          <dependency>
          <groupId>concurrent</groupId>
          <artifactId>concurrent</artifactId>
          <version>1.3.4</version>
          </dependency>
          <!-- spring end -->  回復(fù)  更多評(píng)論
            
          # re: SPRING循環(huán)依賴(circular reference)的解決方法[未登錄](méi) 2008-11-20 17:21 | yang
          我的spring2.5,加上 lazy-init="true" 還是錯(cuò)誤依舊。  回復(fù)  更多評(píng)論
            
          # re: SPRING循環(huán)依賴(circular reference)的解決方法 2008-11-22 08:27 | 我愛(ài)佳娃
          我也沒(méi)啥好建議了!不過(guò)可以嘗試:
          請(qǐng)使用2.5.1版本。
          另外,只在一邊加lazy-init,兩邊換著試下。  回復(fù)  更多評(píng)論
            
          # re: SPRING循環(huán)依賴(circular reference)的解決方法 2008-11-27 11:27 | fofo
          @我愛(ài)佳娃
          但如果A中有B,B中有A的話,如何延遲一方都是不成功的!這個(gè)參數(shù)lazy-init是不是只適合于一方依賴一方,互相依賴的話應(yīng)該不行吧!有沒(méi)有其他解決方案呢?  回復(fù)  更多評(píng)論
            
          # re: SPRING循環(huán)依賴(circular reference)的解決方法 2009-01-15 07:57 | 鯤鵬鴻翔
          好用~!  回復(fù)  更多評(píng)論
            
          # re: SPRING循環(huán)依賴(circular reference)的解決方法[未登錄](méi) 2009-10-21 10:27 | test
          # re: SPRING循環(huán)依賴(circular reference)的解決方法 2013-11-15 10:46 | mingzai
          業(yè)務(wù)類spring配置時(shí)候不要用prototype,用單例模式.  回復(fù)  更多評(píng)論
            
          # re: SPRING循環(huán)依賴(circular reference)的解決方法 2014-11-25 16:08 | liabco
          謝謝,加上 lazy-init="true"問(wèn)題解決了   回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 斗六市| 南开区| 北票市| 米林县| 慈利县| 含山县| 军事| 卢湾区| 新蔡县| 墨竹工卡县| 沂源县| 柳州市| 双流县| 保靖县| 修武县| 宣城市| 福鼎市| 绍兴县| 原阳县| 阿拉善盟| 萝北县| 紫阳县| 吴川市| 日照市| 广汉市| 桦川县| 淳化县| 沭阳县| 沈阳市| 淮滨县| 施甸县| 通辽市| 郴州市| 勐海县| 本溪市| 黑河市| 含山县| 濮阳县| 新乡县| 阳东县| 达日县|