Spring5核心原理-静态工厂方法详解

位置:首页>文章>详情   分类: 教程分享 > Java教程   阅读(759)   2024-04-17 12:31:23
在 Spring 框架中,如果您想通过调用静态工厂方法来创建 bean ,其目的是将对象创建过程封装在static方法中,那么您可以使用factory-method属性。

静态工厂方法示例

如果你想EmployeeDTO基于它designation使用静态工厂方法创建不同的对象,你可以像下面的例子那样做。
public class EmployeeDTO {
 
    private Integer id;
    private String firstName;
    private String lastName;
 
    private String designation;
 
    //Setters and Getters
 
    @Override
    public String toString() {
        return "Employee [id=" + id + ", firstName=" + firstName
                + ", lastName=" + lastName + ", type=" + designation + "]";
    }
}
创建静态工厂方法。
public class EmployeeFactory {
     
    public static EmployeeDTO createEmployeeOfType(String type) 
    {
        if ("manager".equals(type) || "director".equals(type)) 
        {
            EmployeeDTO employee = new EmployeeDTO();
             
            employee.setId(-1);
            employee.setFirstName("dummy");
            employee.setLastName("dummy");
            //Set designation here
            employee.setDesignation(type);
             
            return employee;
        }
        else
        {
            throw new IllegalArgumentException("Unknown product");
        }
    }
}
使用factory-method属性来创建 bean。
<bean id="manager" class="com.leftso.demo.factory.EmployeeFactory"
    factory-method="createEmployeeOfType">
    <constructor-arg value="manager" />
</bean>
 
<bean id="director" class="com.leftso.demo.factory.EmployeeFactory"
    factory-method="createEmployeeOfType">
    <constructor-arg value="director" />
</bean>

演示

让我们测试一下静态工厂方法配置。
public class TestSpringStaticFactoryMethod 
{
    @SuppressWarnings("resource")
    public static void main(String[] args) throws Exception 
    {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
 
        EmployeeDTO manager = (EmployeeDTO) context.getBean("manager");
        System.out.println(manager);
         
        EmployeeDTO director = (EmployeeDTO) context.getBean("director");
        System.out.println(director);
    }
}
在控制台中观察输出:
Employee [id=-1, firstName=dummy, lastName=dummy, type=manager]
Employee [id=-1, firstName=dummy, lastName=dummy, type=director]

 
地址:https://www.leftso.com/article/1002.html

相关阅读

在 Spring 框架中,如果您想通过调用静态工厂方法来创建 bean ,其目的是将对象创建过程封装在static方法中,那么您可以使用factory-method属性。静态工厂方法示例如果你想...
Spring框架Spring IoC容器的核心原理,前三篇已经从历史的角度和大家一起探讨了为什么会有Spring,Spring的两个核心概念:IoC和AOP的雏形,Spring的历史变迁和如今的...
FactoryBean 是用作在IoC 容器中创建其他 bean 的工厂bean 。从概念上讲,FactoryBean 与factory method非常相似,但它是 Spring 特定的 be...
spring boot 入门之spring session实现restful apis。通过spring boot或者spring mvc整合spring session的方式来实现sessio...
spring boot 入门之整合spring session实现session共享。一直以来Java编程中web项目中的session共享问题都是一个很难解决的问题。接下来将讲解通过sprin...
了解Spring bean 生命周期。我们将了解 bean生命周期阶段、初始化和销毁​​回调方法。我们将学习使用 XML 配置以及 Java 注释配置来自定义 bean 生命周期事件。1. 什么...
了解将资源或文件(例如文本文件、XML 文件、属性文件或图像文件)加载到 Spring 应用程序上下文中的不同方法。Spring ResourceLoader为我们通过资源路径getResour...
Spring AOP 实现原理基础讲解
引言    通过之前spring boot mybatis 整合的讲解: spring boot mybaties整合  (spring boot mybaties 整合 基于Java注解方式写...
1. 什么是数据源?spring boot 2 数据源 DataSource(数据源) 是连接到任何物理数据库的工厂. DriverManager 工具的替代方案