您正在解决错误的问题。代理的bean并不是要以一种或另一种方式转换为原始类。这将打破依赖注入的全部观点。毕竟:当您将依赖项指定为接口时,您正在请求的是一个满足合同的Bean,而不是实现详细信息。将其强制转换为原始的Bean类会破坏这种松散的耦合。
您是说其他方法由您调用的接口备份
OtherInterface,那么为什么不使用它呢?毕竟,代理将实现所有目标类的接口,而不仅仅是注入的接口。
@Testpublic void testAdditionalMethod(){ OtherInterface oi = (OtherInterface) dao; System.out.println(oi.additionalMethod(...));}
基本上,您可以使用以下选项(从干净到肮脏不等):
- 分开您的顾虑并为不同的接口使用不同的bean
- 创建延伸的metainterface
OtherInterface
并PersonDao
让你的bean实现一个metainterface - 在任何给定时刻将bean投射到所需的接口。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)