Spring框架开发IOC两种创建工厂方法详解

 更新时间:2021年09月15日 16:05:08   作者:DrLai  
这篇文章主要介绍了Spring框架IOC两种创建工厂方法详解,文中附含详细的代码示例分别对静态方法和实例方法创建工厂作了简要的分析

1.IOC有两种创建工厂的方法

IoC 通过工厂模式创建 bean 的方式有两种: 静态工厂方法 实例工厂方法

2.两种方法的不同

2.1静态方法创建

就是直接可以通过静态方法来实例化一个对象,采用类名.方法名的方式创建

public class HelloFactory {
    public static HelloWorld getInstance(){
        return new Hello();
    }
}
HelloWorldFactory.getInstance();
 

2.2实例方法创建

采用new的方式在堆内存开辟

public class Hello {
    public HelloWorld createHelloWorld(){
        return new Hello();
    }
}
Hello helloF = new Hello();
hello.createHelloWorld();

静态工厂方法

package entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Car {
 private long id;
 private String name;
}
 
package factory;
import entity.Car;
import java.util.HashMap;
import java.util.Map;
public class StaticCarFactory {
 private static Map<Long, Car> carMap;
 static{
 carMap = new HashMap<Long, Car>();
 carMap.put(1L,new Car(1L,"宝⻢"));
 carMap.put(2L,new Car(2L,"奔驰"));
 }
 public static Car getCar(long id){
 return carMap.get(id);
 }
}

xml配置文件

<!-- 配置静态⼯⼚创建 Car -->
<bean id="car" class="com.southwind.factory.StaticCarFactory" factorymethod="getCar">
 <constructor-arg value="2"></constructor-arg>
</bean>

实例工厂创建

package factory;
import entity.Car;
import java.util.HashMap;
import java.util.Map;
public class InstanceCarFactory {
 private Map<Long, Car> carMap;
 public InstanceCarFactory(){
 carMap = new HashMap<Long, Car>();
 carMap.put(1L,new Car(1L,"宝⻢"));
 carMap.put(2L,new Car(2L,"奔驰"));
 }
 public Car getCar(long id){
 return carMap.get(id);
 }
}

xml配置文件

<!-- 配置实例⼯⼚ bean -->
<bean id="carFactory" class="factory.InstanceCarFactory">
</bean>
<!-- 赔偿实例⼯⼚创建 Car -->
<bean id="car2" factory-bean="carFactory" factory-method="getCar">
 <constructor-arg value="1"></constructor-arg>
</bean>

总结

工厂模式的思想正好契合SpringIOC的设计思想:某一接口的具体实现类的选择控制权从调用类中移除,转而交给第三方决定,即借由Spring的Bean配置来实现控制,这同样也是工厂模式的思想。充分体现出解耦合和便于维护的特性。

以上就是Spring框架IOC两种创建工厂方法详解的详细内容,更多关于Spring框架IOC创建工厂的资料请关注脚本之家其它相关文章!

相关文章

  • 解决IDEA中不能正常输入光标变粗的问题

    解决IDEA中不能正常输入光标变粗的问题

    这篇文章主要介绍了在IDEA中不能正常输入光标变粗的解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2020-09-09
  • java调用中国天气网api获得天气预报信息的方法

    java调用中国天气网api获得天气预报信息的方法

    这篇文章主要介绍了java调用中国天气网api获得天气预报信息的方法,可实现调用温度、风力风向及近期天气状况等功能,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • Java 使用 HttpClient 发送 GET请求和 POST请求

    Java 使用 HttpClient 发送 GET请求和 POST请求

    本文主要介绍了Java 使用 HttpClient 发送 GET请求和 POST请求,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Java生成PDF文件的实例代码

    Java生成PDF文件的实例代码

    Java生成PDF文件的实例代码,需要的朋友可以参考一下
    2013-05-05
  • Spring MVC URL地址映射的示例代码

    Spring MVC URL地址映射的示例代码

    @RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。,这篇文章主要介绍了Spring MVC URL地址映射,需要的朋友可以参考下
    2022-07-07
  • spring boot启动时加载外部配置文件的方法

    spring boot启动时加载外部配置文件的方法

    这篇文章主要给大家介绍了关于spring boot启动时加载外部配置文件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-02-02
  • SpringBoot解析指定Yaml配置文件的实现过程

    SpringBoot解析指定Yaml配置文件的实现过程

    这篇文章主要介绍了SpringBoot解析指定Yaml配置文件,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • Centos7安装JDK1.8详细过程实战记录

    Centos7安装JDK1.8详细过程实战记录

    这篇文章主要给大家介绍了关于Centos7安装JDK1.8的相关资料,文中通过图文以及实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-09-09
  • Java 编程如何使用 Class.forName() 加载类

    Java 编程如何使用 Class.forName() 加载类

    在一些应用中,无法事先知道使用者将加载什么类,而必须让使用者指定类名称以加载类,可以使用 Class的静态forName()方法实现动态加载类,这篇文章主要介绍了Java编程如何使用Class.forName()加载类,需要的朋友可以参考下
    2022-06-06
  • SpringBoot基于Swagger2构建API文档过程解析

    SpringBoot基于Swagger2构建API文档过程解析

    这篇文章主要介绍了SpringBoot基于Swagger2构建API文档过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11

最新评论