factory-method
目录
1、概述
2、示例
创建User类
创建 factory-method 类
spring配置
spring引导类
运行结果
1、概述
factory-method:通过工厂类创建Spring bean。两种方式:一种静态方法,一种动态方法。
2、示例
创建User类
package thinking.in.spring.boot.samples.spring5.bean;
public class User {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
创建 factory-method 类
package thinking.in.spring.boot.samples.spring5.factorybean;
import thinking.in.spring.boot.samples.spring5.bean.User;
/**
* 演示 factory-method
*/
public class UserFactory {
public static User getStaticUser() throws Exception {
User user = new User();
user.setId(100);
user.setName("静态工厂方法创建User");
return user;
}
public User getDynamicUser() throws Exception {
User user = new User();
user.setId(200);
user.setName("动态工厂方法创建User");
return user;
}
}
spring配置
<!-- 静态 factory-method 示例 -->
<bean id="staticFactoryMethod" class="thinking.in.spring.boot.samples.spring5.factorybean.UserFactory"
factory-method="getStaticUser" />
<!-- 动态 factory-method 示例 -->
<bean id="userFactory" class="thinking.in.spring.boot.samples.spring5.factorybean.UserFactory" />
<bean id="dynamicFactoryMethod" factory-bean="userFactory"
factory-method="getDynamicUser" />
spring引导类
package thinking.in.spring.boot.samples.spring5.bootstrap;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import thinking.in.spring.boot.samples.spring5.customlabel.CustomLabel;
import thinking.in.spring.boot.samples.spring5.bean.User;
import thinking.in.spring.boot.samples.spring5.factorybean.UserFactoryBean;
public class XmlBeanFactoryBootstrap {
public static void main(String[] args) {
DefaultListableBeanFactory defaultListableBeanFactory = new XmlBeanFactory(new ClassPathResource("application-context.xml"));
/**
* factory-method
*/
User staticUser = (User) defaultListableBeanFactory.getBean("staticFactoryMethod");
System.out.println("factory-method 实例化的User对象:" + staticUser);
User dynamicUser = (User) defaultListableBeanFactory.getBean("dynamicFactoryMethod");
System.out.println("factory-method 实例化的User对象:" + dynamicUser);
}
}
运行结果
factory-method 实例化的User对象:User{id=100, name='静态工厂方法创建User'}
factory-method 实例化的User对象:User{id=200, name='动态工厂方法创建User'}
还没有评论,来说两句吧...