運行環境
idea 2017.1.1
spring 3.2.9.RELEASE
需求背景
需要實現一個功能,該功能有2個場景A、B,大同小異
抽象一個抽象基類Base,實現了基本相同的方法BaseMethod,其中使用到Bean類中的方法
A、B分別繼承Base,重寫BaseMethod方法,在調用super.BaseMethod()的基礎上補充自己的差異代碼
錯誤實現與描述
1、在Base基類中注入Bean,使用@Resource注解,在子類A、B中調用super.BaseMethod()時,其中的Bean報空指針
——不能使用注解注入抽象類的屬性?
2、在bean.xml中配置化注入Bean,配置bean時標明abstract="true",但部署報錯
——沒有在類中實現setter方法。。
3、實現了setter方法,部署成功,但是運行時Bean仍然報空指針
——
解決方法
1、在beans.xml中配置注入,配置bean時標明abstract="true"
<bean id="baseBean" class="com.shane.Base" abstract="true">
<property name="bean" ref="bean"></property>
</bean>
2、在Base中實現Bean的setter
3、在子類中也要實現setter。。
網上找到的一個解決方法。。不知道有沒有更好的。。總感覺這樣寫很坑。。