1
我有使用java 1.4和spring 2.5的項目。 它使用一些第三方庫,它提供了一些服務。春季手動添加豆
class XFactory {
Object getService(String name);
}
其中name
是服務接口的名稱,方法返回實現。 我要擴展這個類,並註冊結果如春豆:
class YFactory extends XFactory implements ApplicationContextAware {
private ApplicationContext applicationContext;
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
Object getService(String name) {
Object service = super.getService(name);
registerBean(applicationContext, name, service);
return service;
}
}
如何實現registerBean
? 我使用Google,但第n是工作:鑄造appCtx到DefaultListableBeanFactory導致CCE,我不能改變XFactory到的FactoryBean(第三方)
添加某物像: 'ConfigurableBeanFactory CFB =(ConfigurableBeanFactory)applicationContext.getAutowireCapableBeanFatory();'' 如果{'' cfb.registerSingleton(intfName,(cfb.containsBean(service.getName())!)服務);' '}' 不確定它是否正常,但很可能工作 - appCtx.getBean(name)返回sth!= null,尚未完全測試。 現在我還有其他問題。我使用Spring AOP,是否有可能代理原始服務,以便它包含已在我的aop.xml中定義的所有方面? – alef
'不確定是否可以'您的代碼已經直接依賴於Spring API,所以如果將來對Spring進行任何更改可能會破壞該部分(這不太可能)。這一舉措不會有很大的變化。對於aop,我查看了代碼並無法找到答案。 – Adi