Spring框架—IOC容器—FactoryBean接口


在Spring中有两种类型的Bean,一种是普通Bean,即BeanFactory;另一种是工厂Bean,即FactoryBean。

1 工厂Bean

工厂Bean的好处就是,我们可以自定义对象的创建过程,如果一个对象的创建过程非常复杂,需要涉及到很多业务逻辑的处理或多个参数的初始化等,用XML配置文件的方式实现起来比较麻烦,这个时候可以考虑使用FactoryBean接口,来完成Bean的创建。

1.1 FactoryBean接口

package org.springframework.beans.factory;

public interface FactoryBean<T> {

    T getObject() throws Exception;

    Class<?> getObjectType();

    boolean isSingleton();
}

getObject()方法:使用工厂Bean创建的对象,其实就是这个方法的返回值。
getObjectType()方法:创建对象的类型。
isSingleton()方法:创建的Bean是否单例。

1.2 简单案例

因为FactoryBean接口是一个接口,需要创建一个类,实现这个接口。
StudentFactoryBean.java

public class StudentFactoryBean implements FactoryBean<Student> {
    @Override
    public Student getObject() throws Exception {
        Student student = new Student();
        Address address = new Address();
        address.setProvince("河北");
        address.setCity("唐山");
        student.setAddress(address);
        return student;
    }

    @Override
    public Class<?> getObjectType() {
        return Student.class;
    }

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

ApplicationContenx.xml

   <!--将工厂Bean交给Spring管理-->
    <bean id="studentBean" class="com.wyl.spring.StudentFactoryBean"> </bean>

SpringBeanTest.java 测试类

public class SpringBeanTest {
    public static void main(String[] args) {
        // 1.创建IOC容器,并指定配置文件位置
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        // 2.从IOC容器中获取管理的对象
        Student bean = ac.getBean("studentBean",Student.class);
        // 3.输出验证
        System.out.println(bean);
    }
}

控制台输出

Student{sid=null, height=0.0, sname='null', address=Address{province='河北', city='唐山'}, pens=null, books=null, score=null}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值