案例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. 执行结果


        目录
        相关文章
        |
        7天前
        |
        Java 容器 Spring
        Bean的实例化阶段
        经过第一阶段,所有bean定义都通过BeanDefinition的方式注册到BeanDefinitionRegistry中当某个请求通过容器的getBean方法请求某个对象,或者因为依赖关系容器需要隐式的调用getBean时,就会触发第二阶段的活动:容器会首先检查所请求的对象之前是否已经实例化完成。 如果没有,则会根据注册的BeanDefinition所提供的信息实例化被请求对象,并为其注入依赖。 当该对象装配完毕后,容器会立即将其返回给请求方法使用。BeanFactory只是Spring IoC容器的一种实现,如果没有特殊指定,它采用采用延迟初始化策略:只有当访问容器中的某个对象时,才对
        |
        5月前
        |
        Java Spring 容器
        解读spring5源码中实例化单例bean的调用链
        解读spring5源码中实例化单例bean的调用链
        |
        4月前
        |
        Java Spring 容器
        循环依赖问题之实例化Bean是通过如何实现的
        循环依赖问题之实例化Bean是通过如何实现的
        |
        5月前
        |
        Java
        java反射-获取类的Class对象方式
        java反射-获取类的Class对象方式
        |
        Java Spring
        案例06 Bean的作用域案例
        分别使用singleton和prototype作用域创建Bean实例,比较singleton和prototype作用域的区别。
        45 0
        |
        6月前
        |
        XML Java 数据格式
        spring-bean配置信息重用(继承)和bean创建顺序是什么以及bean 对象的单例和多例讲解
        spring-bean配置信息重用(继承)和bean创建顺序是什么以及bean 对象的单例和多例讲解
        72 0
        |
        XML Java 数据格式
        案例02 基于xml配置的构造方法注入案例
        通过构造方法方式来演示Spring容器在应用中是如何实现依赖注入的,实现Student输出学生姓名和年龄。
        65 0
        |
        XML Java 数据格式
        案例03 基于xml配置的setter方法注入案例
        通过setter方法方式来演示Spring容器在应用中是如何实现依赖注入的,实现StudentService调用StudentDao的saveStudent操作。
        90 0
        从工厂方法到注解的小例子
        这里的前几个过程就不符代码了,请读者自行补充;只附上第四版,通过注解替换工厂方法实现自动化的小例子
        |
        Java 数据安全/隐私保护 Spring
        Spring中实例化Bean的三种方式及作用范围和生命周期
        Spring中实例化Bean的三种方式及作用范围和生命周期