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
を実装する方法は? 私はグーグルましたが、n番目が働いていた:DefaultListableBeanFactoryはCCEの原因にappCtxをキャストし、私はFactoryBeanのにXFactoryを変更カント(サードパーティ)
追加さSTH等: 'ConfigurableBeanFactory CFB =(ConfigurableBeanFactory)applicationContext.getAutowireCapableBeanFatory();' ' なら{' ' cfb.registerSingleton(intfName、(cfb.containsBean(service.getName())!)サービス); '}' これは問題ないとは確信していますが、うまく動作します。 - appCtx.getBean(name)はsth!= nullを返します。まだ完全にテストされていません。 そして今私は別の問題があります。私はSpring AOPを使用しています。オリジナルのサービスをプロキシすることが可能なので、すでにaop.xmlで定義されているすべての側面が含まれていますか? – alef
'OKかどうかわからない'あなたのコードは既にSpring APIに直接依存しているため、将来Springを変更するとその部分が壊れる可能性があります。この動きは大きな違いはありません。 AOPのために、私はコードを見て答えを見つけることができませんでした。 – Adi