XMLファイルを使用してSpring構成ファイルで構成することは、実際にSpringに対応するコードを実行するように要求しています。たとえば、:
<bean>要素を使用することは、実際にはスプリングがパラメーターなしまたはパラメーターを含むコンストラクターを実行できるようにすることです。
ただし、Javaプログラムには、Getterメソッドの呼び出し、通常のメソッドの呼び出し、クラスまたはオブジェクトのフィールドへのアクセスなど、他のタイプのステートメントもある場合があります。Springは、そのようなステートメントに対応する構成構文も提供します。
ゲッターメソッドを呼び出す:propertyPathFactoryBeanを使用します
クラスまたはオブジェクトの申請された価値を呼び出す:FileDretrivingFactoryBeanを使用する
通常の方法を呼び出す:MetholokingFactoryBeanを使用します
他の豆の特性値を注入します
PropertyPathFactoryBeanは、ターゲットビーンのプロパティ値を取得するために使用されます(実際、ゲッターメソッドを呼び出すことによって返される値)。得られた値を他の豆に注入することも、新しい豆を直接定義することもできます。次の構成ファイルを参照してください。
<bean id = "person"> <property name = "age" value = "30"/> <プロパティ名= "son"> <! - ネストした豆を使用してプロパティ値を定義します - > <bean> <プロパティname = "age" value = "11"/> </bean> </property> </bean> <bean id = "son2"> <年齢財産の年齢になります。 son2-> <プロパティ名= "age"> <! - propertypathfactorybeanがここで使用されていることに注意してください - > <bean id = "person.son.age"/> </property> </bean>
人と息子のクラスのプロパティは、もはや与えられていない構成ファイルから見ることができます。メインプログラムは次のとおりです。
public class test {public static void main(string args []){applicationContext ac = new classpathxmlapplicationContext( "applicationContext.xml"); System.out.println( "age =" + ac.getbean( "son2"、son.class).getage()); }}出力結果:
年齢= 11
Beanインスタンスのプロパティ値は、別のBeanを注入するだけでなく、Beanインスタンスのプロパティ値をBeanインスタンスとして直接定義できます。これは、PropertyPathFactoryBeanによっても行われます。この段落を上記の構成ファイルに追加します。
<bean id = "son1"> <! - ターゲットビーンを決定し、son1のコンポーネントがどのビーンに由来するかを示します。
上記のテストクラスを実行し、Son2をSon1に置き換えると、結果は同じです。
他の豆のフィールド値を注入します
FieldRetrivingFactoryBeanクラスを通じて、他の豆のフィールド値を他の豆に注入することも、新しい豆を直接定義することもできます。これが構成クリップです:
<bean id = "son"> <プロパティ名= "age"> <bean id = "java.sql.connection.transaction_serializable"/> </property> </bean>
メインテストプログラムは上記の定義に似ており、ここでは提供されなくなり、実行結果は次のとおりです。
年齢= 8
この構成では、SONオブジェクトの年齢の値はjava.sql.connection.transaction_serializableの値に等しくなります。上記の定義では、fieldretrivevingfactorybeanファクトリービーンを定義する場合、指定されたIDはビーンインスタンスの一意の識別子ではなく、フィールドの式(つまり、取り出される値)です。
注:フィールドは静的または非静的なものです。上記の構成スニペットで指定されたフィールド式は静的なフィールド値であるため、クラス名から直接アクセスできます。フィールド値が非静的な場合は、容器内に既に存在する豆からアクセスする必要があります。つまり、フィールド式の最初のフレーズは、容器内にすでに存在する豆でなければなりません。
フィールド値は、Beanインスタンスとして定義することもできます。たとえば、次の段落を構成ファイルに追加します。
<bean id = "age"> <! - ターゲットクラスフィールドが配置されているターゲットクラスを指定します - > <プロパティ名= "ターゲットクラス" value = "java.sql.connection" /> <! - ターゲットフィールドはフィールド名を指定します - > <ターゲットフィールド "value =" transaction_serializable " /> < /bean> < /bean> <
メインプログラムに次の出力を追加します。
System.out.println( "age =" + ac.getBean( "age"));
実行結果は上記と同じです。
FieldRetrivingFactoryBeanを使用してフィールド値を取得する場合、次の2つのプロパティを指定する必要があります。
TargetClassまたはTargetObject:フィールド値が配置されているターゲット蓄積またはターゲットオブジェクトを指定するために使用されます。取得したいフィールドが静的な場合は、ターゲットクラスを使用してターゲットの蓄積を指定します。フィールドが非静的な場合は、ターゲットオブジェクトを使用してターゲットオブジェクトを指定します。
ターゲットフィールド:ターゲットクラスまたはターゲットオブジェクトのフィールド名を指定します
フィールドが静的フィールドである場合、それを書くためのより簡潔な方法があります:
<bean id = "age"> <! - 値class-> <プロパティ名= "staticfield" value = "java.sql.connection.transaction_serializable" /> < /bean>
他の豆の戻り値を注入する方法
MethodVokingFactoryBean Factory Beanを介して、ターゲットメソッドの返品値をBeanのプロパティ値に注入できます。このファクトリービーンは、指定された方法の返品値を取得するために使用されます。この方法は、静的メソッドまたはインスタンスメソッドのいずれかです。この値は、指定されたBeanインスタンスの指定された属性に注入するか、Beanインスタンスとして直接定義できます。例を参照してください:
<bean id = "valuegenerator" /> <bean id = "son1"> <property name = "age"> <! - get value neath of valuegenerator-> <bean> <Property name = "valuegenerator" /> <Property name = "Targetmethod" " /bailue" /bean> < /bean> < /bean> < /bean> < /beant
これがValueGeneratorです:
public class valuegenerator {public int getValue(){return 2; } public static int getstaticValue(){return 3;}}テストプログラムはまだSon1の年齢の価値を印刷し、コードは省略されており、結果は次のとおりです。
年齢= 2
静的メソッドを呼び出す場合は、構成を次のように変更します。
<bean id = "son1"> <プロパティ名= "age"> <! - get method return value:getstaticvalue method of valuegenerator-> <bean> <property name = "targetclass" value = "com.abc.util.valuegenerator"/> <プロパティ名= "ターゲットメトッド"値
テスト結果は次のとおりです。
年齢= 3
Javaは過負荷をサポートするため、メソッド名のみを与えるだけでは、どの方法を呼び出すかを決定するのに十分ではありません。 ValueGeneratorのどちらのメソッドにもパラメーターがないため、上記の構成を正常に呼び出すことができます。メソッドにパラメーターがある場合、それを構成する方法は?構成ファイルに次のコンテンツを含めます。
<bean id = "sysprops"> <プロパティ名= "ターゲットクラス" value = "java.lang.system" /> <プロパティ名= "ターゲットメトッド"値= "getProperties" /> <bean> <bean id = "javaversion"> <! - 上記のsysprops = <propation = "" /> <propation " value = "getProperty"/> <! - ここでパラメーターを構成 - > <プロパティ名= "引数"> <! - 呼び出し方式の複数のパラメーターをリストするには - > <リスト> <値> java.version </value> </list> </property> <bean>
上記の例では、「java.version」をパラメーターとしてjava.lang.systemのgetPropertyメソッドを呼び出すことと同等です。返品値は、Javaversionという名前の豆を作成します。つまり、次のことに相当します。
javaversion = java.lang.system.getProperty( "Java.version");
前の記事のフィールドと同様に、呼び出される方法が静的な方法である場合、より簡潔な方法もあります。
<bean id = "mybean"> <! - staticmethodプロパティを使用して、ターゲットクラスのターゲットメソッドを直接指定します - > <プロパティ名= "staticmethod" value = "
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。