私たちのアプリには、マルチテナンシーをサポートするための要件があります。搭乗した各顧客は、コアプラットフォームレベルで定義された1つ以上のBeanまたはBeanの一部のプロパティ(共通コード/定義)をオーバーライドする可能性があります。私はこれを処理するための最良の方法は何であるか疑問に思っています。
27973 次
1 に答える
33
Springを使用すると、同じBean名を複数回再定義でき、特定の名前に対して処理された最後のBean定義が勝者となるようになります。したがって、たとえば、コアBeanを定義するXMLファイルを作成し、それをクライアント固有のXMLファイルにインポートして、それらのBeanの一部を再定義することができます。ただし、「このBean定義はオーバーライドです」と具体的に言うメカニズムがないため、少し壊れやすいです。
これを処理する最もクリーンな方法は、Spring3で導入された新しい@Bean
構文を使用することです。BeanをXMLとして定義するのではなく、Javaで定義します。したがって、コアBeanは1つの@Bean
注釈付きクラスで定義され、クライアント構成はそれをサブクラス化し、適切なBeanをオーバーライドします。これにより、標準のJava@Override
アノテーションを使用して、特定のBean定義がオーバーライドされていることを明示的に示すことができます。
于 2010-11-22T20:46:04.873 に答える