7

ApplicationContextInitializerカスタム ソース (ZooKeeper) からプロパティをロードし、それらをApplicationContextのプロパティ ソース リストに追加する実装を作成しました。

私が見つけることができるすべてのドキュメントは Spring Web アプリに関連していますが、これをスタンドアロンのメッセージ消費アプリケーションで使用したいと考えています。

実装をインスタンス化し、コンテキストを作成してから、そのコンテキストを「手動で」実装に渡す正しいアプローチですか? または、初期化子をコンテキストに適用するフレームワークの自動機能が不足していますか?

4

3 に答える 3

9

空白のコンテキストで初期化することにより、SpringMVC のコンテキストを初期化するための戦略を実装するのに十分簡単であることがわかりました。通常のアプリケーション コンテキストでは、ApplicationContextInitializer を使用するものは何もないため、独自に実行する必要があります。

問題ありませんが、通常の J2SE アプリケーション内では、コンテキスト ローダー ブロックの所有権を持っているため、ライフサイクルのすべての段階にアクセスできます。

// Create context, but dont initialize with configuration by calling 
// the empty constructor. Instead, initialize it with the Context Initializer.
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
MyAppContextInitializer initializer = new MyAppContextInitializer();
initializer.initialize( ctx );

// Now register with your standard context
ctx.register( com.my.classpath.StackOverflowConfiguration.class );
ctx.refresh()

// Get Beans as normal (e.g. Spring Batch)
JobLauncher launcher = context.getBean(JobLauncher.class);

これが役立つことを願っています!

于 2013-05-07T07:30:26.557 に答える
1

問題を正しく理解している場合は、Springのドキュメントセクション4で解決策を見つけることができます。IoCコンテナ

アプリの起動方法の例はこちら-4.2.2コンテナのインスタンス化

5.7アプリケーションコンテキストとリソースパスもご覧ください

于 2012-11-27T09:17:37.980 に答える