五IOC操作Bean管理(FactoryBean)

Posted 上善若水

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了五IOC操作Bean管理(FactoryBean)相关的知识,希望对你有一定的参考价值。

五、IOC操作Bean管理(FactoryBean)

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

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

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

    第一步 创建类,让这个类作为工厂bean,实现接口FactoryBean

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

    package com.deewinkg.bean;   
       
    public class Course {   
        private String cname;   
       
        public void setCname(String cname) {   
            this.cname = cname;   
        }   
       
        @Override   
        public String toString() {   
            return "Course{" +   
                    "cname='" + cname + '\\'' +   
                    '}';   
        }   
    }
    
    package com.deewinkg.bean;   
       
    import org.springframework.beans.factory.FactoryBean;   
       
    public class MyBean implements FactoryBean<Course> {   
        //定义返回 bean   
        @Override   
        public Course getObject() throws Exception {   
            Course course = new Course();   
            course.setCname("abc");   
            return course;   
        }   
       
        @Override   
        public Class<?> getObjectType() {   
            return null;   
        }   
       
        @Override   
        public boolean isSingleton() {   
            return false;   
        }   
    } 
    
    <?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.deewinkg.bean.MyBean"></bean>   
    </beans>  
    
    package com.deewinkg.test;   
       
    import com.deewinkg.bean.Course;   
    import org.springframework.context.ApplicationContext;   
    import org.springframework.context.support.ClassPathXmlApplicationContext;   
       
    public class MyTest   
    {   
        @org.junit.Test   
        public void test1()   
        {   
            // 1.加载spring的配置文件   
            ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");   
            // 2.获取配置,创建对象   
            Course course = context.getBean("myBean", Course.class);   
            System.out.println(course);   
        }   
    }  
    

    运行结果:
    在这里插入图片描述

以上是关于五IOC操作Bean管理(FactoryBean)的主要内容,如果未能解决你的问题,请参考以下文章

[Spring5]IOC容器_Bean管理_工厂Bean

IOC中FactoryBean

Spring5学习笔记 — “工厂Bean(FactoryBean)”

Java Spring5之IOC容器

第248天学习打卡(知识点回顾 xml注入集合属性 FactoryBean bean生命周期)

工厂方法与FactoryBean