我想用NO接口定义一个Spring Bean CLASS

时间:2012-07-17 17:51:15

标签: java spring ioc-container

我有一个扩展HibernateDaoSupport的spring bean。我希望将这个bean注入到我的控制器中,但我不希望它实现任何接口。我只是想从我的其余代码中引用具体类(或许不使用AopProxy?)有没有人有办法做到这一点?

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

@Autowired
private MySampleService mySampleService;

... getters and setters ....

我知道使用界面是一个好主意,这是IoC的重点,但请不要建议我使用界面。

3 个答案:

答案 0 :(得分:10)

如果要代理的类(在您的情况下通过事务代理)实现任何接口(在您的情况下由InitializingBean实现的HibernateDaoSupport),则Spring默认使用基于JDK动态代理的代理策略。

因此,它创建了InitializingBean类型的代理,显然不能将其注入MySampleService类型的字段中。

如果您不想使用界面,可以通过<tx:annotation-driven>声明proxy-target-class = "true"来覆盖事务方面使用的策略。

另见:

答案 1 :(得分:0)

答案 2 :(得分:0)

你可以把包括xml中映射的控制器在内的所有内容写成bean,然后你就不需要编写接口了。 否则,使用注释需要构建接口来代理它们。