我可以使用@Autowire注释继承的最终属性吗?

查德威克(Chadwick):

解决方案:不,我不再扩展原始父级。

原文:
有没有办法注释继承的finalsetter方法?我正在扩展一个类,该类具有Spring final希望使用的二传手@Autowire父类来自库,无法修改。

我发现一种解决方法是编写代理方法,但这似乎比必要的工作还要多。

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:修改上面的示例以反映用例:
用例正在实现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... -->

我更喜欢使用组件扫描来自动发现和自动装配DAO对象,而我不能复制/粘贴对象。

<context:component-scan base-package="com.example.proj.dao.h2" />

我在注释指南中看不到如何声明属性/成员(声明位置除外)。我希望这是我所缺少的。

编辑2:我不再扩展SqlMapClientDaoSupport类,而我的AccountDao是一个POJO,它实现了Support类所提供的功能。这使我可以随意使用@Autowire。

查德威克(Chadwick):

不,没有办法注释继承的final方法。

SqlMapClientDaoSupport没有扩展支持类(),而是在项目中重新实现了它(行为很小),并根据需要注释了方法,然后我的DAO扩展了该支持类。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我可以使用setter方法替换最终变量吗?

DDD(域驱动设计)我可以使用继承吗?

我可以使用AutoMapper映射目标继承而不进行源继承吗?

我可以使用jquery操作<a>标记的名称属性吗?

我可以使用变量访问对象的嵌套属性吗?

我可以使用 JS 动态更改 Clip 属性吗?

我可以使用两个溢出属性吗?

href:我可以获取Google搜索结果以使用/显示最终重定向网址吗?

如果列表理解的一部分,我可以使用最终值吗?

我可以使用premake打印最终组装的gcc命令吗?

我可以总结注释中的属性吗?

我可以公开注释属性吗?

我可以使用对象的单击命令,使用继承来删除重复代码吗?

我可以注释从超类继承的成员吗?

我可以使用Deref <Target = Other>从Other继承特征实现吗?

我们可以使用从WinForms控件继承的对象作为.NET Hashtable的键吗?

我可以使用继承而不是在策略模式中实现接口吗?

我可以使用超类推送到也继承的新视图控制器吗?

我们可以使用继承来实现链接列表吗?

我可以在构造函数注释中引用属性注释吗?

我可以使用基于注释的文档在示例中添加标题吗?

我可以使用Java注释定义编译时间检查吗?

我可以使用类的类型注释来决定类的方法的结果类型吗?

我可以使用 JavaScript 将 HTML 注释转换为实际的 HTML 吗?

我可以使用注释在Play中将控制器方法标记为POST吗?

我可以使用Spring作为CDI来混合JEE和Spring注释吗?

我可以使用@PostConstruct注释的方法来获取所有bean吗?

我可以使用os / arch注释指令等自定义生成标志吗

我可以使用Entity Framework Code First数据注释创建双向外键关系吗?