スプリングビーンを手動で引くにはどうすればよいですか?私はかなり大きなWebアプリケーションを持っていますが、特定のサービスでは、一時オブジェクトはマシン固有のBean(データベース接続情報)にアクセスする必要があります。アプリケーションはクラスターで実行されるため、この一時オブジェクト(サーバー間でバウンスする可能性があります)常に現在のSpringコンテキストとサーバーからの正しい接続を取得する必要があります。
では、手動で豆を春から引き出すための最良の方法は何ですか?
WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(getServletContext());
Object o = ctx.getBean("dataSource");
もちろん、次のようにBeanをキャストできます。
DataSource d = (DataSource) ctx.getBean("dataSource");
ServiceにApplicationContextAwareを実装して、ApplicationContext自体にアクセスし、getBean()を直接呼び出すことができるようにすることができます。
「作成時に」ドメインオブジェクトにプルしようとしているオブジェクトを挿入することをお勧めします。つまり、ドメインオブジェクトが特定のサーバーで作成されると、正しい(マシン固有の)Beanが注入されます。
データベース接続情報を取得する必要がありますか?接続をJNDIに格納し、Beanで検索するのはどうですか?サーバーがそれを提供すると仮定します。