抽象的DAO模式和Spring的“代理不能转换为...”问题!

抽象的DAO模式和Spring的“代理不能转换为...”问题!,第1张

抽象的DAO模式和Spring的“代理不能转换为...”问题!

您正在解决错误的问题。代理的bean并不是要以一种或另一种方式转换为原始类。这将打破依赖注入的全部观点。毕竟:当您将依赖项指定为接口时,您正在请求的是一个满足合同的Bean,而不是实现详细信息。将其强制转换为原始的Bean类会破坏这种松散的耦合。

您是说其他方法由您调用的接口备份

OtherInterface
,那么为什么不使用它呢?毕竟,代理将实现所有目标类的接口,而不仅仅是注入的接口。

@Testpublic void testAdditionalMethod(){    OtherInterface oi = (OtherInterface) dao;    System.out.println(oi.additionalMethod(...));}

基本上,您可以使用以下选项(从干净到肮脏不等):

  1. 分开您的顾虑并为不同的接口使用不同的bean
  2. 创建延伸的metainterface
    OtherInterface
    PersonDao
    让你的bean实现一个metainterface
  3. 在任何给定时刻将bean投射到所需的接口。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5103945.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-16
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存