解决方法:不,我不再延长原始父级。我可以使用@Autowire注解继承的最终财产吗?
原创:
有没有一种方法来注释一个继承的final
setter方法?我正在扩展一个有final
二传手的课程,我想用@Autowire
与Spring。父类来自库,不能修改。
我发现的解决方法是编写一个代理方法,但是这看起来像是比必要的更多的工作。
public abstract class SqlMapClientDaoSupport ... {
public final void setSqlMapClient(SqlMapClient smc) {
...
}
}
@Component
public class AccountDao extends SqlMapClientDaoSupport {
// all this just to annotate an existing method?
@Autowire
public final void setSqlMapClientWorkaround(SqlMapClient smc) {
super.setSqlMapClient(smc);
}
}
编辑1:以上示例修改以反映用例:
用例正在执行DAO对象为iBATIS /弹簧 延伸的共同base class。每个DAO需要相同的 属性集,并且每个DAO都需要配置为一个bean。我目前 通过在applicationContext.xml
中单独配置每一个来完成此操作。
<bean id="accountDAO"
class="com.example.proj.dao.h2.AccountDAOImpl"
p:sqlMapClient-ref="sqlMapClient" />
<bean id="companyDAO"
class="com.example.proj.dao.h2.CompanyDAOImpl"
p:sqlMapClient-ref="sqlMapClient" />
<!-- etc... -->
我宁愿使用组件扫描自动发现并自动装配的DAO 对象,我不能复制/粘贴误事。
<context:component-scan base-package="com.example.proj.dao.h2" />
我没有在annotation guide看到一个如何诠释不到哪里声明以外的 属性/成员。我希望这是 但我错过了。
编辑2:我不再延长SqlMapClientDaoSupport类,而不是我的AccountDao是实现什么正在支持类提供什么功能的POJO。这使我可以随意使用@Autowire。
当你尝试时会发生什么? – skaffman 2009-06-18 10:35:22
在没有在子类中重新声明它的情况下,如何在超类上注解方法的语法是? – Chadwick 2009-06-18 20:27:11