序文
通常のJava開発では、プログラマーは特定のクラスの他のクラスに依存する必要があるため、通常、新しいクラスからnewクラスを使用してからクラスインスタンスを呼び出します。この開発の問題は、 newクラスインスタンスが簡単に管理できないことです。 Springは、依存関係の注入のアイデアを提案します。つまり、依存関係のクラスはプログラマーによってインスタンス化されませんが、スプリングコンテナを介してインスタンスnew 、オブジェクトを必要とするクラスにインスタンスを注入するのに役立ちます。依存関係注入の別の用語は「制御反転」です。一般的な理解は次のとおりです。通常、私たちはインスタンスnew 、このインスタンスの制御はプログラマーであり、制御の反転は、 newインスタンスの作業が米国のプログラマーによって行われず、スプリングコンテナに引き渡されることを意味します。
春に依存関係を注入する4つの方法があります
1.インジェクションを設定します(通常、属性注入とも呼ばれます)
2。コンストラクターインジェクション
3。インターフェイスインジェクション(これは基本的に現在使用されていません)
4。注釈注入(@Autowire)
以下は、SETメソッド注入、コンストラクターインジェクション、注釈注入の使用例です。
1.メソッドインジェクションの設定(属性インジェクション)
userdao.java
public class userdao {public void insertuser(ユーザーユーザー){//特定のロジック省略}}}userservice.java
パブリックインターフェイスuserservice {void insertuser(user user);}userserviceimpl.java
Public Class userserviceImplを実装しているuserservice {private userdao userdao; public void setuserdao(userdao userdao){this.userdao = userdao; } public void insertuser(user user){userdao.insert(user); }}スプリング構成ファイル
<?xml version = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns:xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns:Context = "http://www.springframework.org/schema/context" xsi:schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org.org/schema.pring/b.pring/ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd "> <! - 無関係な構成の書き込み - > name = "userdao" ref = "userdao"> </bean> </beans>
上記は、userdaoをuserserviceimplに挿入できます
2。コンストラクターインジェクション
user.java
パブリッククラスユーザー{//簡単にするには、2つの属性をprivate string名を記述します。民間整数年齢; //名前、Age Publicユーザー(String name、int age){this.name = name; this.age = age; }}次に、スプリング構成ファイルを使用してユーザーオブジェクトを挿入します
<?xml version = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns:xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns:Context = "http://www.springframework.org/schema/context" xsi:schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org.org/schema.pring/b.pring/ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd "> <! - 無関係な構成の書き込みを省略 - >同じ数のパラメーター) - > <constructor-arg type = "java.lang.string" index = "0" balue = "zhangsan"/> <constructor-arg type = "java.lang.integer" index = "1" value = "20> </bean> </beans>
上記は、ユーザーオブジェクトにプロパティ値を挿入できます。もちろん、SETメソッドを使用して例を挿入したい場合は、実際には同じです。 UserServiceImplにコンストラクターを使用する必要があり、正式なパラメーターはuserdaoであるため、 setterメソッドは必要ありません。
次に、Spring構成ファイルの書き込みをこれに変更する必要があります
<?xml version = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns:xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns:Context = "http://www.springframework.org/schema/context" xsi:schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org.org/schema.pring/b.pring/ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd "> <! - 無関係な構成の書き込み - > <! - コンストラクターパラメーターの添え字は0から始まります(同じ数のパラメーターを持つ複数のコンストラクターを避けます) - > <constructor-arg index = "0" ref = "userdao"> </bean> </bean>
これはまた、上記のセットメソッドインジェクションによって達成される効果を達成することができます
3。注釈注入
@Component,@Service,@Controllerなどをこれらのクラスに追加せずに、それを正常に@Autowireできるかどうかを試したことはありません。ただし、対応するアノテーションを対応するレベルに追加することをお勧めします。次の例では、userdaoはモジュール層に属します。春には、 @Component Annotationを使用できます。
userdao.java
@componentpublic class userdao {public void insertuser(user user){//特定のロジック省略}}}userservice.java
パブリックインターフェイスuserservice {void insertuser(user user);}userserviceimpl.java
//対応するスプリングパッケージ@servicepublic class userserviceimplを紹介するuserservice {@autowire private userdao userdao; public void insertuser(user user){userdao.insert(user); }}Springの対応する構成ファイル
<?xml version = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns:xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns:Context = "http://www.springframework.org/schema/context" xsi:schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org.org/schema.pring/b.pring/ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd "> <! - 無関係な構成の書き込み - > <!実際の開発では、注釈コンポーネントを含むパッケージに基づいてスキャンできます - > <コンテキスト:Component-scans-scanベースパッケージ= "*"> <! - コンポーネントスキャンオン - > </コンテキスト:コンポーネント-scan> <コンテキスト:annotation-config> < id = "userservice"/> </beans>
ただし、開発プロセス中に、セットメソッドインジェクションが有効になり、注釈注入が有効になり、Springは最初にSETインジェクションを選択するため、対応するセットメソッドを提供することを忘れないでください。そうしないと失敗します。
比較を通じて、注釈注入は他のインジェクションよりもはるかに便利であり、コードおよび構成ファイルが少なくなります。開発プロセス中に注釈注入を使用することをお勧めします。
要約します
上記は、春の依存性注入のいくつかの方法の完全な紹介です。私はそれがあなたの勉強や仕事であなたを助けることができることを願っています。ご質問がある場合は、メッセージを残すこともできます。 wulin.comへのご支援ありがとうございます。