spring抽象類中注入bean
阿新 • • 發佈:2018-11-07
在使用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();
}
結果: