1. 程式人生 > >spring抽象類中注入bean

spring抽象類中注入bean

在使用spring的時候,有時由於設計的需要,需要使用抽象類(比如模板方法模式),但在抽象類中實現方法是需要依賴其他的介面或類的方法,這時就需要對依賴的介面或類進行注入,需要注意以下內容:

在抽象類中需要注入(@autowire),在繼承了該抽象類的子類中同樣需要再次注入。比如當前專案中,使用者購買物品的模板抽象類中需要使用userservice,則在改抽象類中和道具服務類(實現了道具介面並繼承了模板抽象類)均需要對userservice進行注入

 

當有多個子類的時候只要有一個子類中有注入實現,其他子類是不需要注入了可以直接使用:

 

public abstract  class AbstractTest {

    @Autowired
    protected TusersMapper tusersMapper;
}
//實現1
@Service
public class AbstractTestImpl2 extends AbstractTest {

    public void test2(){
        System.out.println(tusersMapper+"fsafdsafdsafsadfasf");
    }
}
//實現2
@Service
public class AbstractTestImpl1 extends AbstractTest {

    @Autowired
    private TusersMapper tusersMapper;


    public void test1(){
        System.out.println(tusersMapper+"fsafdsafdsafsadfasf");
    }
}

 

//測試
    @Autowired
    AbstractTestImpl1 abstractTestImpl1;

    @Autowired
    AbstractTestImpl2 abstractTestImpl2;

    @Test
    public void test2(){
        abstractTestImpl1.test1();
        abstractTestImpl2.test2();

    }

結果: