序文
春にインスタンスを注入するには多くの方法がありますが、初期化の順序が異なるため、注釈に基づく注入方法は、正しく注入されない傾向があります。
この記事では、実際のプロジェクトで春に管理された豆を抽出する動的に基づいた方法を紹介します。以下ではあまり言いません。詳細な紹介を一緒に見てみましょう。
1.ラベル付けに基づいてインスタンスを注入します
Beanが初期化された場合、依存するオブジェクトは初期化する必要があります。注入されたオブジェクトが現在のオブジェクトよりも遅く初期化されている場合、注入されたオブジェクトはヌルになります。
1.1 @Autowired
タイプごとにスプリングマネージビーンを積み込みます。デフォルトでは、その豆が存在する必要があります。豆がヌルの場合、必要なプロパティをfalseに設定できます。特定の詳細については、ソースコードを参照してください。
@target({elementType.Constructor、elementType.Method、elementType.parameter、elementType.field、annotation_type})@retention(retentionpolicy.runtime)@documentedpublic@interface autowired {/** Annotated Dependencyが必要かどうか。 *デフォルトは{@code true}。コマンドに基づいて豆を注入する必要がある場合は、 @qualifierを使用して名前にラベルを付ける必要があります。コードの例は次のとおりです。
@autwired@qualifier( "beanname")private beantype beanobj;
アプリケーションスコープ:上記の変数、セッターメソッド、およびコンストラクター。
出典:スプリングフレームワーク
1.2 @Inject
javax.inject.injectによって提供されると、タイプに基づいて自動的に組み立てられます。名前に従って転送する必要がある場合は、@Namedを使用して使用する必要があります。この使用法は、Springフレームワークによって提供される@Autowiredと非常に似ています。
アプリケーションスコープ:変数、セッターメソッド、コンストラクター
出典:JSR330仕様Javax Extensionパッケージ
コード例:
@inject@named( "beanname")private beantype bean;
1.3 @Resource
デフォルトは名前によるアセンブリインジェクションです。名前に一致する豆が見つからない場合にのみ、タイプごとに注入されます。 JDK 1.6の後に提供されます。
アプリケーションスコープ:変数およびセッターメソッドに適用できます
出典:JDK 1.6の後に提供
コードの使用例:
@resource(name = "mybeanname")private beantype bean;
2。動的注入法
アイデア:ApplicationContextAwareを使用してApplicationContextの参照を取得し、ApproachContextに基づいてオブジェクトを動的に取得します。
実装コードは次のとおりです。
@componentPublic Class SpringContextutil explments ApplicationContextAware {// Spring Application Context Environment Private static ApplicationContext ApplicationContext;/** ApplicationContextAwareインターフェイスのコールバックメソッドを実装し、コンテキスト環境** @param ApplicationContext*/public void setAppLicationContext(ApplicationContext(ApplicationContext){SpringContext) ApplicationContext;}/*** @return ApplicationContext*/public Static ApplicationContext getApplicationContext(){return applicationContext;}/*** get object ** @param name*@return object*@throws beansection*/public staticオブジェクトgetbean(string name)throws beansexceptその後、コードで必要なBeanインスタンスを動的に取得できます。
beantype bean = springcontextutil.getbean( "beanname")
使いやすいのではありませんか?
要約します
ここでは、豆を春に注入するさまざまな方法を要約します。それぞれには、その利点と欠点があり、それらを使用することを選択できます。
さて、上記はこの記事のコンテンツ全体です。この記事の内容には、すべての人の研究や仕事に特定の参照値があることを願っています。ご質問がある場合は、メッセージを残してコミュニケーションをとることができます。 wulin.comへのご支援ありがとうございます。