まず、ディレクトリ構造を提供次のとおりです。
各ファイルのコードは、参照のために以下に提供されます。
UserDynamicFactory.java
1つの パッケージcn.sxt.factory。 2 3 インポートcn.sxt.vo.User。 4 5 / ** 6 *̬ 7 * 8 * / 9 パブリック クラスUserDynamicFactory { 10 パブリックユーザーのcreateUser(文字列名、int型の年齢){ 11 リターン 新しいユーザー(名前年齢); 12 } 13 }
UserFactory.java
1つの パッケージcn.sxt.factory。 2 3 インポートcn.sxt.vo.User。 4 / ** 5 * 6 * / 7 パブリック クラスUserFactory { 8 パブリック 静的ユーザーのcreateUser(文字列名、int型の年齢){ 9 リターン 新しいユーザー(名前、年齢)。 10 } 11 }
User.java
1つの パッケージcn.sxt.vo。 2 3 4 パブリック クラスユーザー{ 5 プライベート文字列名。 6 プライベート int型の年齢; 7 パブリックユーザ(){ 8 } 9 パブリックユーザ(文字列名、int型の年齢){ 10 スーパー()。 11 この .nameの= 名前; 12 この .age = 年齢; 13 } 14 パブリック文字列のgetName(){ 15 リターン名。 16 } 17 公共 ボイドのsetName(文字列名){ 18 この .nameの= 名前。 19 } 20 公共 int型getAge(){ 21 リターン年齢。 22 } 23 公共 ボイド setAge(int型の年齢){ 24 この .age = 年齢。 25 } 26 @Override 27 パブリック文字列のtoString(){ 28 リターン "ユーザー[NAME =" +名+ "年齢=" +年齢+ "]" 。 29 } 30 }
beans.xmlの
1 <XMLバージョン= "1.0"エンコード= "UTF-8"?> 2 <豆のxmlns = "http://www.springframework.org/schema/beans" 3つの。 のxmlns:XSI =「HTTP:// WWW。 w3.org/2001/XMLSchema-instance " 4 のxsi:schemaLocationの=" http://www.springframework.org/schema/beans 5 HTTP:// www.springframework.org/schema/beans/spring-beans.xsd " > 6 <! -によって参照コンストラクタでオブジェクトを作成する- > 7 <ビーンID = "U1" クラス = "cn.sxt.vo.User"> 8。 <! -パラメータインデックスにより設定されたパラメータスケールは0から始まり- > 9 <コンストラクタのArg-指数= "0"値= "ジョー・スミスクレイジー" /> 10 <コンストラクタ、引数インデックス= "1"値= "33" /> 11 </ビーン> 12である <ビーンID = "U2" クラス = "cn.sxt.vo.User"> 13である <! - nameは、パラメータ名のパラメータ名によって表されるパラメータを設定する- > 14 <コンストラクタのArg-名= "名前"値= "ジョー・スミスクレイジー" /> 15 <コンストラクタのArg-NAME = "年齢"値= "33である" /> 16 </ビーン> 17 <ビーンID = "U3" クラス =「cn.sxt.vo .user "> 18である ! -パラメータ・タイプのタイプを示すタイプ・パラメータによって設定されたパラメータ< - > 19 <コンストラクタのArg-TYPE =" java.lang.Stringで"値="ジョー・スミスクレイジー「/> 20 <constructor-引数タイプ=「int型」 値= "33" /> 21 </ビーン> 22 <ビーンID = "U4" クラス= "cn.sxt.vo.User"> 23が <プロパティ名= "名前"値= "zhangwuji" /> 24 <プロパティ名= "年齢"値= /> "23は" 25 </豆> 26です <! - -静的ファクトリ・オブジェクトの作成- > 27 <豆を上記ID = "U5" クラス = "cn.sxt.factory.UserFactory" = factory's-方法"のcreateUser"> 28 <タイプ= "java.lang.Stringで"のコンストラクタ-Argで値= "ジョー・スミスクレイジー" /> 29 <コンストラクタのArg-TYPE = "INT"値= "33は" /> 30 </ビーン> 31である <! -動的植物によるオブジェクトの作成- > 32 <ビーンID = "工場" クラス = "cn.sxt.factory.UserDynamicFactory" /> 33 <ビーンID = "U6"工場豆= "工場"ファクトリメソッド= "のcreateUser"> 34 <コンストラクタ、引数のタイプ= "java.lang.Stringで"値= "张三疯" /> 35 <コンストラクタ、引数タイプ= "INT"値= "33" /> 36 </ビーン> 37 </豆>
SpringTest.java
1 パッケージcn.sxt.spring。 2 3 インポートorg.junit.Test。 4 インポートorg.springframework.context.ApplicationContext。 5 輸入org.springframework.context.support.ClassPathXmlApplicationContext。 6 7 インポートcn.sxt.vo.User。 8 9 パブリック クラスSpringTest { 10 @Test 11 公共 ボイドtestHello(){ 12 // 13 のApplicationContext AC = 新しい ClassPathXmlApplicationContext( "beans.xmlの" )。 14 ユーザーU =(ユーザー)ac.getBean( "U6" ); 15 のSystem.out.println(U)。 16 } 17 }
コンストラクタ経由でオブジェクトを作成するにはA.
1.パラメータのインデックス値でパラメータを設定します
<! -コンストラクタによって参照してオブジェクトを作成する- >
<ビーンID =「U1」クラス =「cn.sxt.vo.User」>
-インデックス0から出発してインデックス・パラメータ<によってパラメータを設定します! - >
<コンストラクタのArg-インデックス= "0"値= "ジョー・スミスクレイジー" />
<コンストラクタのArg-率=値= "33は" />」1"
</ビーン>
2.パラメータ名を設定します。
<ビーンID = "U2" クラスは = "cn.sxt.vo.User">
<! -パラメータ名によってパラメータを設定するための名前は、パラメータの名前を示している- >
<コンストラクタのArg-NAME = "名前"値=「張3狂気"/>
<コンストラクタのArg-名="年齢"値=" 33「です/>
</豆>
前記パラメータタイプはによって設定され
<豆IDは= "U3" クラス = "cn.sxt.vo.User">
<! -パラメータ・タイプのタイプを示すタイプ・パラメータによって設定されたパラメータ- >
<コンストラクタのArg-TYPE = "java.lang.Stringで"値= "ジョー・スミスクレイジー" />
<コンストラクタのArg-TYPE = "INT"値= "33は" />
</豆>
II。コンストラクタのパラメータによってオブジェクトを作成するには
<ビーンID = "U4" クラス = "cn.sxt.vo.User">
<プロパティ名= "名前"値= "张无忌" />
<プロパティ名= "年齢"値= "23" />
</ビーン>
注:コンフィギュレーションパラメータを提供する必要、セットメソッドおよびプロパティに対応しているが
III。静的ファクトリによるオブジェクトを作成するには
静的ファクトリクラス:
/ ** * staticファクトリメソッド * staticファクトリオブジェクトによって作成 * / パブリック クラスUserFactory { 公共の 静的なユーザーのcreateUser(文字列名、int型の年齢){ 返す 新しい新しいユーザー(名前、年齢); } }
プロファイル
<! -静的ファクトリを介してオブジェクトを作成- >
<上記ID = "U5"ビーンクラス = "cn.sxt.factory.UserFactory" = Factory's-方法"のcreateUser">
<種類のコンストラクタ、引数=「java.lang.Stringでの"値="ジョー・スミスクレイジー"/>
33「/>である<コンストラクタのArg型=" INT "=値"
</ビーン>
IV。工場による動的オブジェクトを作成するには
動的なファクトリクラス
/ ** *オブジェクトを作成するために、動的工場 * * / パブリック クラスUserDynamicFactory { パブリックユーザーのcreateUser(文字列名、int型の年齢){ 返す 新しい新しいユーザー(名前、年齢); } }
プロファイル
<! -通过动态工厂来创建对象- > <豆ID = " 工場 " クラス =" cn.sxt.factory.UserDynamicFactory "/> <豆ID =" U6" 工場豆 =" 工場 "工場法= "のcreateUser"> <コンストラクタ、引数のタイプ= "java.lang.Stringで"値= "张三疯" /> <コンストラクタ、引数のタイプ= "INT"値= "33" /> </豆>