我面臨的問題ProxyFactoryBean
類返回null類對象,ProxyFactryBean是對目標
我們想要得到的ProxyFactoryBean
的targetBean
的類名。
當我們調用BeanFactory
上的getType
給出bean名稱時,它總是返回null。
我們的Java代碼
public class TestSpring {
public static void main(String args[]){
TestSpring ts = new TestSpring();
ts.process();
}
private void process() {
BeanFactory factory = new XmlBeanFactory(new FileSystemResource("E:\\beans.xml"));
Class c = factory.getType("scor.imagedev.action.imageDevServerTaskActions");
System.out.println(c);
}
}
我們的配置文件如下:
<bean id="scor.actionProxyTemplate" class="org.springframework.aop.framework.ProxyFactoryBean" abstract="true" >
<property name="proxyTargetClass" value="true" />
</bean>
<bean id="scor.imagedev.action.imageDevServerTaskActions" parent="scor.actionProxyTemplate" scope="prototype">
<property name="target">
<bean class="test.spring.Foo"/>
</property>
</bean>
一些我想在這裏添加其他東西。
- 如果我們將bean作爲單例,它就可以工作。但在我們的案例中,我們希望它成爲一個原型。我們不得不使用
BeanFactory.getType(<beanName>)
。這是我們的基礎框架撥打電話。我們不能改變我們的基本框架。 - 請問
targetSource
能解決這個問題嗎?我試過了,但沒用。可能是我錯誤地使用了 - 我正在使用Spring 2.0.6。
問候 ANKIT
感謝您的回覆。我曾用2.5.6和3.0試過。我得到了同樣的結果。我確實調試了Spring的源代碼。我不知何故在這裏聞到一個問題。對於我的案例調用正在進行AbstractAutowireCapableBeanFactory.getNonSingletonFactoryBeanForType檢查。這裏它創建了一個沒有注入屬性的基本ProxyFactoryBean類。在創建該對象後,將調用factory bean的getObjectType。在這裏它正在尋找targetClass來獲取對象類型。但由於targetClass沒有被注入,所以它返回null。 – Ankit 2010-10-03 06:46:18
@Ankit將其報告爲一個錯誤。他們會驗證它並提供更多見解。 – Bozho 2010-10-03 07:08:08