案例05 Bean的实例化案例

简介: 分别使用构造方法、静态工厂和实例工厂实例化Bean。

 分别使用构造方法、静态工厂和实例工厂实例化Bean。

1. 创建项目

Idea创建Java项目,项目名称为:case05-spring-student04。

2. 导入spring相关jar包

case05-spring-student04项目下创建lib目录,在lib目录下导入Jar包:

    • 核心包

    spring-core-5.3.25.jar

    spring-beans-5.3.25.jar

    spring-context-5.3.25.jar

    spring-expression-5.3.25.jar

      • 测试包

      junit-4.6.jar

        • 依赖包

        commons-logging-1.2.jar

        3. 创建Spring配置文件

        src目录下创建applicationContext.xml配置文件。

        <?xmlversion="1.0" encoding="UTF-8"?><beansxmlns="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"><!--构造方法实例化--><beanid="studentBean1"class="com.wfit.student.StudentBean1"/><!--静态工厂实例化--><beanid="studentBean2"class="com.wfit.factory.BeanStaticFactory"factory-method="getStudentBean2"/><!--实例工厂实例化 1配置工厂 --><beanid="beanInstanceFactory"class="com.wfit.factory.BeanInstanceFactory"/><!--实例工厂实例化 2 使用factory-bean指向配置的实例工厂--><beanid="studentBean3"factory-bean="beanInstanceFactory"factory-method="getStudentBean3"/></beans>


        4. 创建StudentBean1类

        src目录下创建com.wfit.student包,此包目录下创建StudentBean1类。

        publicclassStudentBean1 {
        //无参构造方法publicStudentBean1(){
        System.out.println("构造方法实例化Bean...");
            }
        }


        5. 创建StudentBean2类

        com.wfit.student目录下创建StudentBean2类。

        publicclassStudentBean2 {
        publicStudentBean2(){
        System.out.println("静态工厂实例化Bean...");
            }
        }


        6. 创建StudentBean3类

        com.wfit.student目录下创建StudentBean3类。

        publicclassStudentBean3 {
        publicStudentBean3(){
        System.out.println("实例工厂实例化Bean...");
            }
        }


        7. 创建BeanStaticFactory类

        src目录下创建com.wfit.factory包,此包目录下创建BeanStaticFactory类。

        publicclassBeanStaticFactory {
        publicstaticStudentBean2getStudentBean2(){
        returnnewStudentBean2();
            }
        }


        8. 创建BeanInstanceFactory类

        com.wfit.factory目录下创建BeanInstanceFactory类。

        publicclassBeanInstanceFactory {
        publicBeanInstanceFactory(){
        System.out.println("实例工厂实例化...");
            }
        publicStudentBean3getStudentBean3(){
        returnnewStudentBean3();
            }
        }


        9. 创建测试类

        src目录下创建com.wfit.test包,此包目录下创建TestStudent测试类。

        publicclassTestStudent {
        @TestpublicvoidtestBean(){
        //初始化Spring容器ApplicationContext,加载配置文件ApplicationContextapplicationContext=newClassPathXmlApplicationContext("applicationContext.xml");
            }
        }


        10. 执行结果


        目录
        相关文章
        |
        Java C# Spring
        Spring中Bean实例化过程中的initializeBean方法
        Spring中Bean实例化过程中的initializeBean方法
        101 0
        |
        6天前
        |
        XML 数据格式
        实例工厂实例化Bean走一波~
        实例工厂实例化Bean就是直接创建Bean实例。在XML配置文件中,不使用class属性直接指向bean实例所属的类,而是通过factory-bean属性指向Bean配置的实例化工厂,并且使用factory-method属性指定要调用的实例工厂中的方法。
        31 13
        |
        3月前
        |
        缓存 安全 Java
        Spring框架中Bean是如何加载的?从底层源码入手,详细解读Bean的创建流程
        从底层源码入手,通过代码示例,追踪AnnotationConfigApplicationContext加载配置类、启动Spring容器的整个流程,并对IOC、BeanDefinition、PostProcesser等相关概念进行解释
        333 24
        |
        6月前
        |
        Java Spring 容器
        解读spring5源码中实例化单例bean的调用链
        解读spring5源码中实例化单例bean的调用链
        |
        Java Spring
        案例06 Bean的作用域案例
        分别使用singleton和prototype作用域创建Bean实例,比较singleton和prototype作用域的区别。
        48 0
        |
        Java Spring
        案例04 基于注解的依赖注入案例
        基于注解的依赖注入方式实现学生信息新增。
        56 0
        |
        XML Java 数据格式
        案例02 基于xml配置的构造方法注入案例
        通过构造方法方式来演示Spring容器在应用中是如何实现依赖注入的,实现Student输出学生姓名和年龄。
        71 0
        |
        存储 缓存 Java
        六.Spring源码剖析-单利Bean的实例化
        前面系列章节我们分析了Spring的IOC的启动流程,包括:容器创建,配置加载,配置解析,Bean注册等几个阶段,所以Bean注册其实就是把Bean的相关属性,依赖关系等封装成BeanDeafinition对象,然后注册到一个ConcurrentHashMap中。要注意的是这个BeanDeafinition只是对Bean的一个定义封装而已,并不是真正的Bean的实例,那Bean的实例是在什么时候创建的?有三种情况 如果是单利Bean,且lazy-init=false 急切初始(即时,立即,迫切,饥饿都是一个意思)的情况,在IOC容器启动之后就会根据BeanDeafinition对Bean进行
        |
        缓存 Java Spring
        Spring源码分析之Bean的创建过程详解(一)
        Spring源码分析之Bean的创建过程详解
        152 0
        |
        Java Spring
        Spring源码分析之Bean的创建过程详解(三)
        Spring源码分析之Bean的创建过程详解
        96 0

        热门文章

        最新文章