1つの静的ファクトリインジェクション
Springでは、静的ファクトリを使用してBeanをインスタンス化することもできます。このメソッドは、Beanのインスタンスを作成するための静的ファクトリメソッドを提供する必要があります。
①エンティティクラスを作成する
public class Person{
String name;
public void setName(String name){
this.name = name;
}
}
②静的ファクトリクラスを
作成する以下に示すように、MyBeanFactoryという名前のクラスを作成し、このクラスにcreateBean()という名前の静的メソッドを作成してBeanのインスタンスを作成します。
public class MyBeanFactory {
// 创建Bean实例的静态工厂方法
public static Person createBean() {
Person person = new Person();
person.setName("glp");
return person;
}
}
③Spring構成ファイルの
作成Spring構成ファイルapplicationContext.xmlを作成します。
<?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:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
<bean id="person" class="com.mengma.instance.static_factory.MyBeanFactory"
factory-method="createBean" />
</beans>
上記のコードでは、IDがpersonのBeanが定義されています。class属性は、対応するファクトリ実装クラスをMyBeanFactoryとして指定します、およびfactory-method属性は、Beanのインスタンスを取得するためにファクトリクラスのcreateBean()メソッドを呼び出すようにSpringコンテナに指示するために使用されます。
2インスタンスファクトリインジェクション
Springでは、Beanをインスタンス化する別の方法は、インスタンスファクトリを使用してメンバーメソッドにBeanインスタンスを直接作成することです。
同時に、構成ファイルで、インスタンス化する必要のあるBeanは、class属性を介してインスタンス化されたクラスを直接指すのではなく、factory-bean属性を介してインスタンスファクトリを構成し、次にfactory-method属性を使用します。工場で使用するメソッドを決定します。
①エンティティクラスを作成する
public class Person{
String name;
public void setName(String name){
this.name = name;
}
}
②インスタンスファクトリクラスを
作成するMyBeanFactoryという名前のクラスを作成します。
public class MyBeanFactory {
public MyBeanFactory() {
System.out.println("person3工厂实例化中");
}
// 创建Bean的方法
public Person createBean() {
Person person = new Person();
person.setName("cbj");
return person;
}
}
③Spring設定ファイルの
作成以下のようにSpring設定ファイルapplicationContext.xmlを作成します。
<?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:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
<!-- 配置实例工厂 -->
<bean id="myBeanFactory" class="com.mengma.instance.factory.MyBeanFactory" />
<!-- factory-bean属性指定一个实例工厂,factory-method属性确定使用工厂中的哪个方法 -->
<bean id="person" factory-bean="myBeanFactory" factory-method="createBean" />
</beans>
上記のコードでは、最初にインスタンスファクトリBeanを設定し、次にインスタンス化する必要のあるBeanを設定します。factory-bean
ファクトリを指定するプロパティインスタンスである個人BeanのID。属性値はid属性値ファクトリインスタンスです。factory-method属性を使用して、ファクトリでのcreateBean()メソッドの使用を決定します。