实例工厂实例化Bean走一波~

本文涉及的产品
性能测试 PTS,5000VUM额度
云原生网关 MSE Higress,422元/月
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
简介: 实例工厂实例化Bean就是直接创建Bean实例。在XML配置文件中,不使用class属性直接指向bean实例所属的类,而是通过factory-bean属性指向Bean配置的实例化工厂,并且使用factory-method属性指定要调用的实例工厂中的方法。

实例工厂实例化Bean就是直接创建Bean实例。在XML配置文件中,不使用class属性直接指向bean实例所属的类,而是通过factory-bean属性指向Bean配置的实例化工厂,并且使用factory-method属性指定要调用的实例工厂中的方法。

1 创建类Car(和上文一样)

package com.lq.entities;
/**
 * @Author: Luqing Teacher
 * @CreateTime: 2024-12-17
 * @Description: 汽车类
 * @Version: 1.0
 */
public class Car {
    public Car() {
        System.out.println("这是Car类");
    }
}

2 创建实例工厂

package com.lq.Factory;
import com.lq.entities.Car;
/**
 * @Author: Luqing Teacher
 * @CreateTime: 2024-12-20
 * @Description: 实例工厂
 * @Version: 1.0
 */
public class MyCarFactory2 {
    public MyCarFactory2() {
        System.out.println("工厂实例化中...");
    }
    public Car createCar()
    {
        return new Car();
    }
}

3 配置文件(仔细查看与上文中的不同)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="myCarFactory2" class="com.lq.Factory.MyCarFactory2" />
    <bean id="car" factory-bean="myCarFactory2" factory-method="createCar" />
</beans>

4 测试类测试

package com.lq.test;
import com.lq.entities.Car;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
 * @Author: Luqing Teacher
 * @CreateTime: 2024-12-20
 * @Description: test
 * @Version: 1.0
 */
public class TestCar2 {
    public static void main(String[] args) {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext-car.xml");
        Car car = applicationContext.getBean("car", Car.class);
        System.out.println(car);
    }
}

结果如下

工厂实例化中...
这是Car类
com.lq.entities.Car@73ad2d6
进程已结束,退出代码0
相关文章
|
8月前
|
Java Spring 容器
解读spring5源码中实例化单例bean的调用链
解读spring5源码中实例化单例bean的调用链
|
Java Spring
案例05 Bean的实例化案例
分别使用构造方法、静态工厂和实例工厂实例化Bean。
63 0
|
Java Spring
面试了才知道初始化Bean不仅只有new那么简单
面试了才知道初始化Bean不仅只有new那么简单
64 0
|
XML 存储 Java
以后面试别再说你只会用@Autowired实例化Bean了
以后面试别再说你只会用@Autowired实例化Bean了
66 0
|
存储 缓存 Java
六.Spring源码剖析-单利Bean的实例化
前面系列章节我们分析了Spring的IOC的启动流程,包括:容器创建,配置加载,配置解析,Bean注册等几个阶段,所以Bean注册其实就是把Bean的相关属性,依赖关系等封装成BeanDeafinition对象,然后注册到一个ConcurrentHashMap中。要注意的是这个BeanDeafinition只是对Bean的一个定义封装而已,并不是真正的Bean的实例,那Bean的实例是在什么时候创建的?有三种情况 如果是单利Bean,且lazy-init=false 急切初始(即时,立即,迫切,饥饿都是一个意思)的情况,在IOC容器启动之后就会根据BeanDeafinition对Bean进行
|
Java Spring 容器
Spring构造通过工厂创建bean
Spring构造通过工厂创建bean
|
缓存 Java 开发者
Spring源码(八)-构造方法实例化Bean-createBeanInstance
各位小伙伴好,这是 Spring 源码系列的第八篇文章。本篇篇幅较长(五千八百字),建议收藏慢慢品尝。
684 1
|
Java Spring 容器
Spring框架:第三章:对象的生命周期及单例bean生命周期的11个步骤
Spring框架:第三章:对象的生命周期及单例bean生命周期的11个步骤
128 0
|
Java Spring 容器
SpringBoot (走读源码)静态方法中调用spring注入的对象,注入对象为null?
SpringBoot (走读源码)静态方法中调用spring注入的对象,注入对象为null?
469 0
SpringBoot (走读源码)静态方法中调用spring注入的对象,注入对象为null?
|
XML 缓存 Java
Spring源码解析之八finishBeanFactoryInitialization方法即初始化单例bean
Spring源码解析之八finishBeanFactoryInitialization方法即初始化单例bean 七千字长文深刻解读,Spirng中是如何初始化单例bean的,和面试中最常问的Spring是如何解决循环依赖?