我有一个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批注的另一个豆中,这是我的代码:
@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]类型

任何帮助,将不胜感激。

最佳答案

这是对ProxyFactoryBean所做的误解。像FactoryBean的所有实现一样,生成的bean不是FactoryBean的类型,而是工厂生成的任何bean的类型(see Spring docs)

在您的情况下,sendSingleSmsServiceProxy bean将为SendSingleSmsService类型:

@Resource
public SendSingleSmsService sendSingleSmsService;
ProxyFactoryBean对象实际上是透明的,所见即所得。

10-02 23:34