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

发布于:2024-12-21 ⋅ 阅读:(18) ⋅ 点赞:(0)

实例工厂实例化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