この記事を読む前に、まず「 SpringのIOCとAOPとコードの例の簡単な理解」を参照して、春にIOCとAOPについて学びます。トピックにアクセスしましょう。この記事では、春にJava Beansを定義およびロードする方法を紹介します。
ビジネスシナリオ
また、運転している人の例でもあります。まず、車のインターフェイスと2つの実装BenzとBMWを定義し、次に車のインターフェイスに依存する人クラスを定義します。
パブリックインターフェイスカー{void go();}パブリッククラスベンツ実装car {public void go(){system.out.println( "benz go ..."); }}パブリッククラスBMW実装Car {public void go(){system.out.println( "bmw go ..."); }} public class person {string name = "";カーカー= null; Public Car getCar(){return car; } public void setCar(カーカー){this.car = car; } public Person(string name){this.name = name; } public void drive(){system.out.println(name+"is driving ...");貨物(); }}Personクラスでは、車のオブジェクトはこのクラスの依存オブジェクトであり、コンストラクターメソッドを介して人クラスに注入する必要があることがわかります。上記のコードにはまだ春の影がありません。スプリングがどのように注入するか見てみましょう。
スプリング依存関係を追加します
現在、多くのプロジェクトがMavenに依存関係を管理するために適用されており、このプロジェクトにも同じことが当てはまります。 POM.xmlに依存関係ノードを追加します
<Dependency> groupId> org.springframework </groupid> <artifactid> spring-core </artifactid> <version> 3.2.6.Release </version> </dependency> <dependency> <groupid> org.springframework </groupid> <artifactid> spring> </artifactid> <バージョン> 3.2.6.Release </version> </dependency> <dependency> <shipided> org.springframework </groupid> <artifactid> spring-context </artifactid> <bersions> 3.2.6.release </version> </dependency> <sependency> <springifid> </groupid> </spring> </springifid> </groupid <バージョン> 3.2.6.Release </version> </dependency> <dependency> <groupid> org.springframework </groupid> <artifactid> spring-context-support </artifactid> <バージョン>
これらの依存ノードをpom.xmlファイルの依存関係ノードに配置すると、Eclipseは関連するパッケージをデフォルトの場所に自動的にダウンロードします。
豆を手動で定義して組み立てます
次のコンテンツを使用して、プロジェクトのルートディレクトリにbean.xmlという名前の新しいXMLファイルを作成します。
<?xml version = "1.0" encoding = "utf-8"?> <!doctype beans public " - // spring // dtd bean // en" "" http://www.springframework.org/dtd/spring-beans.dtd "> <bean id" "/>>>>>>>>>>>>>>>>>> /> <プロパティ名= "car" ref = "car" /> < /bean> < /beans>
上記のXMLファイルは、最初にIDを使用したBeanを車として、IDを持つBeanをTOMとして定義します。車はTOMの依存関係であり、<プロパティ名= "car" ref = "car" />を介してTOMの車の属性に手動で組み立てられます。
アプリケーションオブジェクト間に共同関係を作成する動作は、配線と呼ばれます。これは、オブジェクトインジェクションへの依存の本質でもあります。
次に、メインメソッドのアプリケーションコンテキストオブジェクトをインスタンス化し、BeanのTOMノードを取得します。
public class app {public static void main(string [] args){applicationContext Context = new ClassPathxMLApplicationContext( "bean.xml");人Tom =(人)Context.getBean( "Tom"); tom.drive(); }}プログラムを実行すると、出力の結果は次のとおりです。
トムは運転しています... bmwgo ...
自動アセンブリ
再び繰り返しますが、アプリケーションオブジェクト間に共同関係を作成する動作は、オブジェクトをインスタンス化するプロセスではなく、配線と呼ばれます。上記のXMLファイルでは、<プロパティ名= "car" ref = "car" />で依存関係オブジェクトを組み立てましたが、アプリケーションの継続的な開発により、XML構成ファイルは間違いなくますます複雑になります。 ref = "car"を介して豆をIDカーと関連付ける方法は遅れ始めました。次に、スプリングが自動アセンブリビーンズをどのように実装するかを紹介します。
自動アセンブリの種類
春には4つのアセンブリ戦略があります。この記事の複雑さを減らすために、一般的に使用される2つの戦略、BYNAMEメソッドとBYTYPEメソッドを紹介します。名前が示すように、bynameメソッドは、beanの属性とIDの名前が同じかどうかを確認することです。この例では、PersonクラスにはCarと呼ばれる属性があります。クラスまたは変更属性が自動アセンブリに設定され、アセンブリポリシーがBYNAMEである場合、SpringはID車の豆を探します(同じ名前である必要があります)。 BYTYPEメソッドは、タイプが同じかどうかを比較することです。この例では、人クラスまたは個人のクラスの車属性が自動アセンブリに設定され、アセンブリポリシーがBYTYPEである場合、車の属性は車の種類であるため、スプリングは自動アセンブリの場合、タイプの車またはそのサブクラスの豆を探します。
XMLを使用して自動アセンブリを実装します
次に、コードを変更し、XML構成方法を使用して自動アセンブリを実現します。
<?xml version = "1.0" encoding = "utf-8"?> <!doctype beans public " - // spring // dtd bean // en" "" http://www.springframework.org/dtd/spring-beans.dtd "> <bean =" car "/> <bean id" <constructor-arg value = "tom"/> </bean> </beans>
Personクラスは変更を必要としません。
最初に、<propertyname = "car" ref = "car"/>コードの行を削除しました。これは手動の方法であるためです。次に、IDを使用してProperty Autowire = "Byname"をBeanに追加し、名前で依存関係を自動的に組み立てるように設定します。人オブジェクトを取得するとき、人のすべてのプロパティ名に特別な意味があります。 Springは、Person ClassでCarと呼ばれる別の属性を監視し、構成ファイルにID Carを備えたBeanを見つけたため、人の車の属性に自動的に組み立てられました。
注釈による自動アセンブリ
Bean.xmlに次の変更を加えます
<?xml version = "1.0" encoding = "utf-8"?> <!doctype beans public " - // spring // dtd bean // en" "" http://www.springframework.org/dtd/spring-beans.dtd"> id = "tom"> <constructor-arg value = "tom"/> </bean> </beans>
beans with id tomのbeanの属性autowire = "byname"を削除し、属性default-autowire = "byname"をノード豆に追加して、ファイルに定義されているすべての豆の自動アセンブリメソッドのデフォルト値をbynameに設定します。次に、Personクラスにいくつかの変更を加え、@Autowired Annotationを車のセッターメソッドに追加して、スプリングに通知してプロパティを自動的に組み立てます。コードを再実行し、出力の結果は変更されません。
@autowiredpublic void setcar(カーカー){this.car = car;}注釈を通じて自動アセンブリを実装する場合、最初に豆のルートにデフォルトの自動アセンブリメソッドを設定する必要があります。次に、構成ファイルに自動アセンブリが必要な各豆のAutoWire属性を構成する必要はありません(メソッドがデフォルトと矛盾している場合は、デフォルトの自動アセンブリ方法をオーバーライドするように個別に構成できます)。注釈法はより繊細であり、自動的に組み立てる必要がある豆の属性レベルを制御できます。
上記のすべてのコードでは、org.zdk.springproj1.bmwクラスを個人クラスの依存関係として使用します。個人クラスがビジネスニーズのためにBMWを運転する必要がない場合、Javaコードを変更せずに、構成をorg.zdk.springproj1.benzに変更する必要があります。これは、IOCコンテナとしてのスプリングのパワーです。
要約します
上記は、この記事の春の定義とアセンブリ豆のすべての詳細な説明です。私はそれが誰にでも役立つことを願っています。興味のある友達は引き続きこのサイトを参照できます:
Java Spring Annotation Configuration Beanインスタンスコード分析
スプリング構成の使用量のライフサイクルの詳細な説明
欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!