序文
豆のインスタンス化を導入する前に、まず豆とは何か、豆の構成方法を紹介する必要があります。
スプリングが大きな工場と見なされる場合、スプリングコンテナの豆はその工場の製品です。 Spring Factoryを使用して豆を生産および管理するには、構成ファイルに必要な豆とそれらを組み立てる方法を指定する必要があります。
Springコンテナは、2つの形式の構成ファイル、つまりプロパティファイル形式とXMLファイル形式をサポートしています。実際の開発では、最も一般的に使用される量はXMLファイル形式です。したがって、次の説明では、XMLファイル形式の構成方法について説明します。 XML構成ファイルのルート要素は<Beans>であり、複数の子要素<Bean>を含むことができ、各子供要素はBeanを定義し、Beanをスプリング容器に組み立てる方法を説明します。 <bean>要素のプロパティは次のとおりです。
構成ファイルでは、通常、通常のBeanは、IDとクラスの2つの属性を定義する必要があります。豆を定義する方法は次のとおりです。
<?xml version = "1.0" encoding = "utf-8"?> <!doctype beans public " - // spring // dtd bean // en" "" http://www.springframework.org/dtd/spring-beans.dtd "> <beans> < id = "userdao"/> <bean name = "userdao1、userdao2"/> </beans>
上記のコードでは、2つの豆がIDと名前属性を使用して定義され、対応する実装クラスがクラス要素を使用して指定されます。 IDと名前が指定されていない場合、Springはクラス値をIDとして使用します。
春に豆をインスタンス化する4つの方法
この記事では、主に豆をインスタンス化する4つの方法(注入方法)またはオブジェクトのインスタンス化に依存する4つの方法を紹介します。上記のプログラムは、Beanオブジェクトを作成する方法を使用し、コンストラクターメソッドを使用します(Springは、コンストラクターの民営化の下でクラスオブジェクトを作成できます)
4つの一般的な作成方法があります。
1)セッターメソッド
2)コンストラクター
3)静的工場
4)工場の例
1.セッターメソッドを使用します
パブリックインターフェイスiuserdao {void adduser(); void deluser(); void updateUser(); } public class userdaoimplを実装しますiuserdao {public void adduser(){system.out.println( "adduserメソッドが呼び出されました"); } public void deluser(){system.out.println( "deluserメソッドが呼び出されました"); } public void updateUser(){system.out.println( "updateUserメソッドが呼び出されました"); } public class useraction {private iuserdao dao; // daoは、springgが管理する必要がある依存関係オブジェクトであり、get setメソッドpublic void execute(){dao.adduser(); dao.updateuser(); dao.deluser(); }}// configuration file <bean name = "useraction_name"> <プロパティ名= "dao" ref = "userdao_name" /> //名前は以下に参照されます< /bean> <bean name = "userdao_name" />>
// classPathxMlApplicationContext ctx = new classpathxmlapplicationContext( "beans.xml"); useraction action =(useraction)ctx.getbean( "useraction_name"); action.execute();
2。コンストラクター関数
public class useraction {// public useraction(){}パラメーターなしでコンストラクターを維持できます//これらはいくつかの依存関係であり、get setメソッドを生成する必要はありません。プライベートストリングスクール;プライベートiuserdao dao; // springが依存関係オブジェクトのパブリックユーザーアクセスを注入することを願っています(iuserdao dao、userinfo user、string school){this.dao = dao; this.school = school; this.user = user; } public void execute(){dao.adduser(); dao.updateuser(); dao.deluser(); System.out.println(user); System.out.println(学校);}// configuration file <bean name = "userinfo_name"> <property name = "id" value = "1" /> <プロパティname = "username" value = "weekly" /> <プロパティ名= "パスワード" value = "123" /> <プロパティname = "note" value = "これ/> <constructor-arg ref = "userinfo_name" /> <constructor-arg value = "harbin normal University" />> < /bean> /*インデックスとタイプのプロパティを指定することもできます。指数もタイプも指定できません<bean name = "user_name"> <constructor-arg index = "これはインターフェイスであり、実装クラスのタイプに指定することはできません。
// classPathxMlApplicationContext ctx = new classpathxmlapplicationContext( "beans.xml"); useraction action =(useraction)ctx.getbean( "useraction_name"); action.execute();
3。静的工場法
// Factory、DAO Public Class UserDaofactoryを生成するために使用される実装クラス}} public class useraction {private iuserdao dao; // Factoryメソッドを使用して値に注意を払い、また、public void execute(){dao.adduser(); dao.updateuser(); dao.deluser();} public void setdao(iuserdao dao){this.dao = dao; }}//構成ファイル<bean name = "useraction_name"> <プロパティ名= "dao" ref = "userdao_name" /> < /bean> <bean name = "userdao_name" factory-method = "createuserdaoinstance" />>
// classPathxMlApplicationContext ctx = new classpathxmlapplicationContext( "beans.xml"); useraction action =(useraction)ctx.getbean( "useraction_name"); action.execute();
IV。工場の例
// factory => public class userdaofactory {//この方法は静的なpublic iuserdao createuserdaoinstance(){return new userdaooracleimpl(); }}// configuration <bean name = "useraction_name"> <プロパティ名= "dao" ref = "userdao_name" /> < /bean> <bean name = "userdao_name" factory-bean = "userdaofactory_name" factory-method = " />>" userdaofactory_name "
要約します
上記は、この記事のコンテンツ全体です。この記事の内容には、すべての人の研究や仕事に特定の参照値があることを願っています。ご質問がある場合は、メッセージを残してコミュニケーションをとることができます。 wulin.comへのご支援ありがとうございます。