Spring——自定义FactoryBean

📢📢📢📣📣📣

哈喽!大家好,我是【一心同学】,一位上进心十足的【Java领域博主】!😜😜😜

✨【一心同学】的写作风格:喜欢用【通俗易懂】的文笔去讲解每一个知识点,而不喜欢用【高大上】的官方陈述。

✨【一心同学】博客的领域是【面向后端技术】的学习,未来会持续更新更多的【后端技术】以及【学习心得】。

✨如果有对【后端技术】感兴趣的【小可爱】,欢迎关注一心同学】💞💞💞

❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️ 


目录

一、介绍

1.1普通Bean和工厂Bean

1.2 为什么需要FactoryBean?

1.3 FactoryBean的作用

二、使用

结语


一、介绍

1.1普通Bean和工厂Bean

在Spring中有两种类型bean,一种普通bean,另外一种工厂bean(FactoryBean)

1、普通bean:在配置文件中定义bean类型就是返回类型

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

1.2 为什么需要FactoryBean?

一般情况下,Spring通过反射机制利用<bean>的class属性指定实现类实例化Bean,在某些情况下,实例化Bean过程比较复杂,如果按照传统的xml方式,则需要在<bean>中提供大量的配置信息,这就会导致XML的配置灵活性受限。而自定义FactoryBean的出现则可以解决这个问题。

这个时候我们就可以通过自定义一个FactoryBean,然后通过xml简单结合FactoryBean来创建我们所需要的Bean。

1.3 FactoryBean的作用

作用从名称上也能大概知道它的作用就是起一个工厂作用,就是使用了工厂模式,封装了创建对象的复杂过程,当所要创建的对象有复杂实例化过程代码,官网就推荐使用自定义FactoryBean的方式,把这个自定义的FactoryBean注入到容器中。

故归结为一句话:FactoryBean可以创建实例化过程比较复杂的Bean

二、使用

第一步 创建类,让这个类作为工厂bean,实现接口 FactoryBean,并重写其方法,定义返回的bean类型

package com.yixin.factoryBean;

import com.yixin.dao.Book;
import org.springframework.beans.factory.FactoryBean;
public class MyBean implements FactoryBean<Book> {

    public Book getObject() throws Exception {
//创建Bean
        Book book = new Book();
        book.setId(66);
        book.setName("《算法》");
        return book;
    }
    public Class<?> getObjectType() {
        return null;
    }
    public boolean isSingleton() {
        return false;
    }
}

第二步 进行XML配置绑定

<bean id="myBean" class="com.yixin.factoryBean.MyBean"/>

测试:

@Test
public void test2(){
        //解析bean3.xml文件 , 生成管理相应的Bean对象
        ApplicationContext context = new ClassPathXmlApplicationContext("bean3.xml");
        //getBean : 参数即为spring配置文件中bean的id .
        Book book=context.getBean("myBean",Book.class);
        System.out.println(book);
        }



输出:
Book{id=66, name='《算法》'}


结语



以上就是【一心同学】对一个自定义FactoryBean的简单实现了,注意其的使用场合:当要创建的对象有复杂实例化过程代码时,再使用FactoryBean就可以大大提升我们的开发效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一心同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值