亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

彈簧自注入

彈簧自注入

寶慕林4294392 2019-10-28 16:58:33
我在Spring 3.x中嘗試了以下代碼,但失敗了BeanNotFoundException,它應該根據我之前提出的問題的答案- 我可以使用Spring注入相同的類嗎?@Servicepublic class UserService implements Service{    @Autowired    private Service self;}由于我在Java 6中進行了嘗試,因此發現以下代碼可以正常工作:@Service(value = "someService")public class UserService implements Service{    @Resource(name = "someService")    private Service self;}但我不明白它如何解決循環依賴性。編輯:這是錯誤消息。OP在對以下答案之一的評論中提到了它:由以下原因引起:org.springframework.beans.factory.NoSuchBeanDefinitionException:未找到依賴項類型為[com.spring.service.Service]的匹配bean:期望至少有1個bean可以作為此依賴項的自動裝配候選。依賴項注釋:{@ org.springframework.beans.factory.annotation.Autowired(required = true)}
查看完整描述

3 回答

?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

此代碼也適用:


@Service

public class UserService implements Service {


    @Autowired

    private ApplicationContext applicationContext;


    private Service self;


    @PostConstruct

    private void init() {

        self = applicationContext.getBean(UserService.class);

    }

}

我不知道為什么,但是似乎Spring可以從ApplicationContextif 創建但未初始化的bean中獲取。@Autowired在初始化之前可以工作,并且找不到相同的bean。因此,@Resource也許在@Autowired之前和之后都可以使用@PostConstruct。


但是我不知道,只是猜測。無論如何,好問題。


查看完整回答
反對 回復 2019-10-28
?
縹緲止盈

TA貢獻2041條經驗 獲得超4個贊

鑒于以上代碼,我看不到循環依賴性。您將某些Service實例注入UserService。注入的Service的實現不一定需要是另一個UserService,因此不存在循環依賴性。

我不明白為什么要將UserService注入UserService,但我希望這是一種理論上的嘗試。


查看完整回答
反對 回復 2019-10-28
  • 3 回答
  • 0 關注
  • 742 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號