我有一个扩展 HibernateDaoSupport
的 spring bean。我希望将这个 bean 注入(inject)到我的 Controller 中,但我不希望它实现任何接口(interface)。我只想从我的其余代码中引用具体类(也许不使用 AopProxy?)有人有办法做到这一点吗?
<bean id="mySampleService" class="com.sample.MySampleService">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
@Autowired
private MySampleService mySampleService;
... getters and setters ....
我知道使用接口(interface)是个好主意,这就是 IoC 的全部意义所在,但请不要建议我使用接口(interface)。
最佳答案
如果要代理的类(在您的情况下由事务代理)实现任何接口(interface)(InitializingBean
在您的情况下由 HibernateDaoSupport
实现),Spring 默认使用基于 JDK 动态代理的代理策略。
因此,它创建了一个 InitializingBean
类型的代理, 显然,不能注入(inject) MySampleService
类型的字段中.
如果您不想使用接口(interface),您可以通过声明 <tx:annotation-driven>
来覆盖事务方面使用的策略。与 proxy-target-class = "true"
.
另请参阅:
关于java - 我想定义一个没有接口(interface)的 Spring Bean CLASS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11528061/