Cha*_*ick 5 java spring annotations ibatis
解决方案:不,我不再扩展原始父级.
原文:
有没有办法注释继承的finalsetter方法?我正在扩展一个类,它有一个final我想@Autowire用Spring 的setter .父类来自库,无法修改.
我发现的一种解决方法是编写一个代理方法,但这似乎比必要的工作更多.
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);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑1:以上示例已修改以反映用例:
用例是为Ibatis/Spring实现扩展公共基类的 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... -->
Run Code Online (Sandbox Code Playgroud)
我更喜欢使用组件扫描来自动发现和自动装配DAO对象,我无法复制/粘贴botch.
<context:component-scan base-package="com.example.proj.dao.h2" />
Run Code Online (Sandbox Code Playgroud)
我没有在注释指南中看到如何注释除声明的属性/成员之外的属性/成员.我希望这是我想念的东西.
编辑2:我不再扩展SqlMapClientDaoSupport类,而是我的AccountDao是一个POJO,它实现了Support类提供的少量功能.这允许我随意使用@Autowire.
不,没有办法注释继承的最终方法。
我没有扩展支持类 ( SqlMapClientDaoSupport),而是在我的项目中重新实现了它(它的行为是最小的),根据需要注释方法,并且我的 DAO 扩展了该支持类。
| 归档时间: |
|
| 查看次数: |
4024 次 |
| 最近记录: |