第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

再次使用 Autowire Bean 還是使用 getter?

再次使用 Autowire Bean 還是使用 getter?

qq_笑_17 2021-11-11 15:59:03
我有一個抽象類,它自動裝配一些 bean,例如一個存儲庫:public abstract class A {    @Autowired    private ARepository aRepository;    protected void useRepository() {        aRepository.doSomething();    }}這個抽象類使用該存儲庫來處理某些方法?,F(xiàn)在我還有一個子類,它擴展類A并且還有一個方法,它使用ARepository.public class B extends A {    private void useRepositoryAgain() {        aRepository.doSomething();    }}現(xiàn)在我的問題:我怎么看有兩種方法可以做到這一點:1:B再次在課堂上自動裝配存儲庫:public class B extends A {    @Autowired    private ARepository aRepository;    ...}2:在A類中創(chuàng)建getter方法:public abstract class A {    ...    public ARepository getARepository() {        return this.aRepository;    }}public class B extends A {    private void useRepositoryAgain() {        getARepository().doSomething();    }}根據(jù)我的理解,兩者之間應(yīng)該沒有區(qū)別,因為再次自動裝配存儲庫只會返回它的相同實例。我的理解是否正確,或者我缺少的兩種方法之間是否存在顯著差異?
查看完整描述

1 回答

?
SMILET

TA貢獻1796條經(jīng)驗 獲得超4個贊

再次自動裝配 bean 將不起作用。它會導(dǎo)致aRepository類中的成員變量A為null. Spring 只會在類中自動裝配成員變量,B而不會在A.


相反,只在 classA而不是在 class 中自動裝配它B,并使它protected而不是private在 class 中,A以便子類中的方法B也可以訪問它:


public abstract class A {

    @Autowired

    protected ARepository aRepository;


    protected void useRepository() {

        aRepository.doSomething();

    }

}


public class B extends A {


    private void useRepositoryAgain() {

        // Fine, since aRepository is protected in the superclass

        aRepository.doSomething();

    }

}


查看完整回答
反對 回復(fù) 2021-11-11
  • 1 回答
  • 0 關(guān)注
  • 162 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號