我有一个ProxyFactoryBean bean:
<bean id="sendSingleSmsServiceProxy" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="target">
<ref bean="sendSingleSmsServiceImpl" />
</property>
<property name="proxyInterfaces">
<value>com.test.SendSingleSmsService</value>
</property>
<property name="interceptorNames">
<value>hibernateInterceptor</value>
</property>
</bean>
我正在尝试使用@Resource注释将此bean注入另一个bean中,这是我的代码:
@Resource
public ProxyFactoryBean sendSingleSmsServiceProxy;
但我得到了这个例外:
org.springframework.beans.factory.BeanCreationException:创建名为'com.test.webservice.impl.SendSingleSmsImpl'的bean时出错:资源依赖注入失败;嵌套异常是org.springframework.beans.factory.BeanNotOfRequiredTypeException:名为'sendSingleSmsServiceProxy'的bean必须是[org.springframework.aop.framework.ProxyFactoryBean]类型,但实际上是[$ Proxy24]类型
任何帮助将不胜感激。
答案 0 :(得分:6)
这是ProxyFactoryBean
所做的错误理解。与FactoryBean
的所有实现一样,生成的bean不是FactoryBean
的类型,而是工厂生成的任何bean的类型(see Spring docs)
在您的情况下,sendSingleSmsServiceProxy
bean的类型为SendSingleSmsService
:
@Resource
public SendSingleSmsService sendSingleSmsService;
ProxyFactoryBean
对象实际上是透明的,你看到的是它产生的任何东西。