Spring源码窥探之:FactoryBean

本文详细介绍了如何使用Spring的IoC容器通过FactoryBean接口注入自定义实体类。包括定义实体类Fish,实现FactoryBean接口创建并注册实体类,以及如何在Spring配置类中使用@Bean注解进行注册。并通过测试类演示了如何从Spring容器中获取FactoryBean创建的实例以及FactoryBean自身。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 定义Fish实体类

/**
 * @author 70KG
 * @Title: Fish
 * @Description:
 * @date 2018/7/22下午5:00
 * @From www.nmyswls.com
 */
@Data
public class Fish {

    private String name;

    private int age;

    public Fish(){}

    public Fish(String name, int age) {
        this.name = name;
        this.age = age;
    }

}

2. 实现FactoryBean来注入实体类

/**
 * @author 70KG
 * @Title: FactoryBeanRegist
 * @Description:
 * @date 2018/7/22下午8:06
 * @From www.nmyswls.com
 */
public class FactoryBeanRegist implements FactoryBean<Fish> {

    @Override
    public Fish getObject() throws Exception {
        return new Fish();
    }

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

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

3. 编写配置类

/**
 * @author 70KG
 * @Title: FactoryBeanConfig
 * @Description:
 * @date 2018/7/22下午8:21
 * @From www.nmyswls.com
 */
@Configuration
public class FactoryBeanConfig {

    @Bean
    public FactoryBeanRegist getBean() {
        return new FactoryBeanRegist();
    }

}

4. 测试

/**
 * @author 70KG
 * @Title: FactoryBean的测试类
 * @Description:
 * @date 2018/7/22下午8:22
 * @From www.nmyswls.com
 */
public class Test01 {

    @Test
    public void test() {

        AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(FactoryBeanConfig.class);
        // 不加"&"获取到的是FactoryBean中的实例
        Object getBean1 = ac.getBean("getBean");
        // 加"&"获取到的是实现了FactoryBean接口的FactoryBeanRegist本身
        Object getBean2 = ac.getBean("&getBean");
        System.out.println(getBean1.getClass());
        System.out.println(getBean2.getClass());

    }

}

5. 测试结果

class com.nmys.story.springCore.springioc.importBean.Fish
class com.nmys.story.springCore.springioc.factoryBean.FactoryBeanRegist

 

FactoryBean是用来向容器中注入Bean的接口。而BeanFactory是从容器中取Bean的接口。

转载于:https://www.cnblogs.com/zhangjianbing/p/9820663.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值