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创建工厂的资料请关注脚本之家其它相关文章!

相关文章

  • java实现合并两个已经排序的列表实例代码

    java实现合并两个已经排序的列表实例代码

    这篇文章主要介绍了java实现合并两个已经排序的列表实例代码,有需要的朋友可以参考一下
    2013-12-12
  • java实现最短路径算法之Dijkstra算法

    java实现最短路径算法之Dijkstra算法

    这篇文章主要介绍了java实现最短路径算法之Dijkstra算法, Dijkstra算法是最短路径算法中为人熟知的一种,是单起点全路径算法,有兴趣的可以了解一下
    2017-10-10
  • JavaWeb案例讲解Servlet常用对象

    JavaWeb案例讲解Servlet常用对象

    Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层
    2021-10-10
  • Java多线程并发synchronized 关键字

    Java多线程并发synchronized 关键字

    这篇文章主要介绍了Java多线程并发synchronized 关键字,Java 在虚拟机层面提供了 synchronized 关键字供开发者快速实现互斥同步的重量级锁来保障线程安全。
    2022-06-06
  • Java原子类中的AtomicInteger类详解

    Java原子类中的AtomicInteger类详解

    这篇文章主要介绍了Java原子类中的AtomicInteger类详解,原子类可以保证对"变量"操作的,原子性、有序性、可见性,我们可以通过AtomicInteger类,来看看它们是怎样工作的,需要的朋友可以参考下
    2023-10-10
  • Java多线程之Disruptor入门

    Java多线程之Disruptor入门

    这篇文章主要介绍了Java多线程之Disruptor入门,文中有非常详细的代码示例,对正在学习java多线程的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • Java超详细讲解三大特性之一的多态

    Java超详细讲解三大特性之一的多态

    多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量到底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定
    2022-05-05
  • 利用Spring Cloud Config结合Bus实现分布式配置中心的步骤

    利用Spring Cloud Config结合Bus实现分布式配置中心的步骤

    这篇文章主要介绍了利用Spring Cloud Config结合Bus实现分布式配置中心的相关资料,文中通过示例代码将实现的步骤一步步介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友下面来一起看看吧
    2018-05-05
  • java高效读大文件(csv,text)的几种处理方式

    java高效读大文件(csv,text)的几种处理方式

    这篇文章主要给大家介绍了关于java高效读大文件(csv,text)的几种处理方式,Java中处理大文件时,通常需要采取一些特定的策略来避免内存溢出或性能问题,文中通过代码及图片介绍的非常详细,需要的朋友可以参考下
    2024-07-07
  • Springmvc restful配置遇到的小坑

    Springmvc restful配置遇到的小坑

    本文是小编给大家带了的Springmvc restful配置遇到的小小坑,小编给大家带来了问题原因及解决办法,非常不错,具有参考借鉴价值,感兴趣的朋友一起看下吧
    2016-07-07

最新评论