factory-method

目录

1、概述

2、示例

创建User类

创建 factory-method 类

spring配置

spring引导类

运行结果


1、概述

factory-method:通过工厂类创建Spring bean。两种方式:一种静态方法,一种动态方法。

2、示例

创建User类

  1. package thinking.in.spring.boot.samples.spring5.bean;
  2. public class User {
  3. private int id;
  4. private String name;
  5. public int getId() {
  6. return id;
  7. }
  8. public void setId(int id) {
  9. this.id = id;
  10. }
  11. public String getName() {
  12. return name;
  13. }
  14. public void setName(String name) {
  15. this.name = name;
  16. }
  17. @Override
  18. public String toString() {
  19. return "User{" +
  20. "id=" + id +
  21. ", name='" + name + '\'' +
  22. '}';
  23. }
  24. }

创建 factory-method 类

  1. package thinking.in.spring.boot.samples.spring5.factorybean;
  2. import thinking.in.spring.boot.samples.spring5.bean.User;
  3. /**
  4. * 演示 factory-method
  5. */
  6. public class UserFactory {
  7. public static User getStaticUser() throws Exception {
  8. User user = new User();
  9. user.setId(100);
  10. user.setName("静态工厂方法创建User");
  11. return user;
  12. }
  13. public User getDynamicUser() throws Exception {
  14. User user = new User();
  15. user.setId(200);
  16. user.setName("动态工厂方法创建User");
  17. return user;
  18. }
  19. }

spring配置

  1. <!-- 静态 factory-method 示例 -->
  2. <bean id="staticFactoryMethod" class="thinking.in.spring.boot.samples.spring5.factorybean.UserFactory"
  3. factory-method="getStaticUser" />
  4. <!-- 动态 factory-method 示例 -->
  5. <bean id="userFactory" class="thinking.in.spring.boot.samples.spring5.factorybean.UserFactory" />
  6. <bean id="dynamicFactoryMethod" factory-bean="userFactory"
  7. factory-method="getDynamicUser" />

spring引导类

  1. package thinking.in.spring.boot.samples.spring5.bootstrap;
  2. import org.springframework.beans.factory.support.DefaultListableBeanFactory;
  3. import org.springframework.beans.factory.xml.XmlBeanFactory;
  4. import org.springframework.core.io.ClassPathResource;
  5. import thinking.in.spring.boot.samples.spring5.customlabel.CustomLabel;
  6. import thinking.in.spring.boot.samples.spring5.bean.User;
  7. import thinking.in.spring.boot.samples.spring5.factorybean.UserFactoryBean;
  8. public class XmlBeanFactoryBootstrap {
  9. public static void main(String[] args) {
  10. DefaultListableBeanFactory defaultListableBeanFactory = new XmlBeanFactory(new ClassPathResource("application-context.xml"));
  11. /**
  12. * factory-method
  13. */
  14. User staticUser = (User) defaultListableBeanFactory.getBean("staticFactoryMethod");
  15. System.out.println("factory-method 实例化的User对象:" + staticUser);
  16. User dynamicUser = (User) defaultListableBeanFactory.getBean("dynamicFactoryMethod");
  17. System.out.println("factory-method 实例化的User对象:" + dynamicUser);
  18. }
  19. }

运行结果

  1. factory-method 实例化的User对象:User{id=100, name='静态工厂方法创建User'}
  2. factory-method 实例化的User对象:User{id=200, name='动态工厂方法创建User'}

发表评论

表情:
评论列表 (有 0 条评论,49人围观)

还没有评论,来说两句吧...

相关阅读