zoukankan      html  css  js  c++  java
  • Spring源码窥探之:FactoryBean

    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的接口。

  • 相关阅读:
    笔记。------数组
    图片与文字的对齐方式
    clear:both;和overflow:hidden;的应用理解。
    淘宝首页
    错误:编码GBK的不可映射字符
    Java基础之反射
    (一)Servlet简介
    Windows10快捷键
    (二)Maven的安装与环境配置
    (一)Maven简介
  • 原文地址:https://www.cnblogs.com/zhangjianbing/p/9820663.html
Copyright © 2011-2022 走看看