У меня есть определение bean-компонента в Spring и его прокси-аналог, который должен использоваться везде:
<bean name="my.Bean" class="org.springframework.aop.framework.ProxyFactoryBean" scope="prototype">
<property name="proxyInterfaces" value="my.Interface"/>
<property name="target" ref="my.BeanTarget"/>
<property name="interceptorNames">
<list>
<value>someInterceptor</value>
</list>
</property>
</bean>
<bean name="my.BeanTarget" class="my.InterfaceImpl" scope="prototype">
<property name="foo" ref="bar"/>
</bean>
Это все работает хорошо;и в pre-Spring v3 мире я использовал его как
ApplicationContext ctx = ...;
my.Interface foo = (my.Interface) ctx.getBean("my.Bean"); // cast is necessary
В Spring 3 стало возможным делать безопасный поиск по типу, например:
my.Interface foo = ctx.getBean(my.Interface.class);
Опять же, это хорошо работает дляобычные бины, тогда как для прокси-бинов я получаю my.BeanTarget
вместо my.Bean
.Я попытался встроить my.BeanTarget
(как показано в документации по Spring), чтобы сделать его скрытым, но все, что я получил, было
org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [my.Interface] is defined: expected single bean but found 0:
Так что можно ли использовать поиск типа bean-компонентов с прокси-компонентами, и если да- как?