IOC(八)

Spring有两种类型的bean, 一种普通bean, 一种工厂bean(FactoryBean)

普通Bean: 在配置文件中定义的bean类型就是返回类型;

工厂bean: 在配置文件中定义的bean类型可以和返回类型不一样

创建工厂bean的方法:

第一步: 创建类, 实现接口FactoryBean;

第二步: 实现接口里面的方法, 在实现的方法中定义返回的bean类型.

创建FacBean2类:

public class FacBean2 {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

创建FacBean类实现FactoryBean接口:

public class FacBean implements FactoryBean<FacBean2> {

    //定义返回bean的类型
    @Override
    public FacBean2 getObject() throws Exception {
        FacBean2 myBean2 = new FacBean2();
        return myBean2;
    }

    @Override
    public boolean isSingleton() {
        return false;
    }

    @Override
    public Class<?> getObjectType() {
        return null;
    }
}

在配置文件中创建bean指定类型为FacBean:

<?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="myBean" class="com.ryan.spring5.factoryBean.FacBean"></bean>
</beans>

测试可发现, 创建的对象的类型已经被指定为FacBean2:

原文地址:https://www.cnblogs.com/Ryan368/p/13891912.html