我要定义不带接口一个Spring Bean类(I want to define a Spring B

2019-06-26 08:45发布

我有一个延伸的Spring bean HibernateDaoSupport 。 我想这个bean注入到我的控制器,但我不希望它实现任何接口。 我只是想从我的代码的其余部分中参考具体类(不使用AopProxy吧?)有没有人有这样的一种方式?

<bean id="mySampleService" class="com.sample.MySampleService">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

@Autowired
private MySampleService mySampleService;

... getters and setters ....

我知道这是要使用的接口一个不错的主意,这就是国际奥委会的整点,但请不要建议我使用的接口。

Answer 1:

如果到(在你的情况下,由事务代理)被代理类实现任何接口( InitializingBean通过实施HibernateDaoSupport你的情况),Spring缺省使用基于JDK动态代理代理策略。

因此,它创建了一个类型的代理InitializingBean ,即,显然,不能注入类型的字段MySampleService

如果你不想使用的界面,你可以重写通过声明使用事务方面的战略<tx:annotation-driven>proxy-target-class = "true"

也可以看看:

  • 7.6代理机制


Answer 2:

检查以下内容。 确保您有CGLIB的类路径中。

http://static.springsource.org/spring/docs/3.0.0.M3/spring-framework-reference/html/ch08s06.html



Answer 3:

你可以写的一切,包括在XML如豆类,那么你就需要编写接口映射控制器。 否则,使用注解,你需要建立以代理他们的接口。



文章来源: I want to define a Spring Bean CLASS with NO Interface