Spring ProxyFactoryBean Проблема с инъекцией - PullRequest
3 голосов
/ 25 ноября 2010

У меня есть боб ProxyFactoryBean:

<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': ошибка внедрения зависимостей ресурса; вложенным исключением является org.springframework.beans.factory.BeanNotOfRequiredTypeException: bean-компонент с именем sendSingleSmsServiceProxy должен иметь тип [org.springframework.aop.framework.ProxyFactoryBean], но на самом деле имеет тип [$ Proxy24] * 1010

любая помощь будет оценена.

1 Ответ

6 голосов
/ 25 ноября 2010

Это неправильное понимание того, что делает ProxyFactoryBean.Как и во всех реализациях FactoryBean, сгенерированный компонент не является типом FactoryBean, а типом любого компонента, сгенерированного фабрикой ( см. Spring docs )

Inв вашем случае бин sendSingleSmsServiceProxy будет иметь тип SendSingleSmsService:

@Resource
public SendSingleSmsService sendSingleSmsService;

Объект ProxyFactoryBean эффективно прозрачен, и вы видите, что он генерирует.

...