Spring(四):Bean实例化及属性注入

一、Spring容器简单原理

  • 通过前面的学习我们了解到spring容器帮助我们管理对象和维护对象的依赖关系,其实spring就是通过工厂模式实现的

    • 读取配置文件

    • 根据配置信息,通过反射方式创建对象

  • Spring(四):Bean实例化及属性注入_第1张图片

     

     

 

二、工厂接口关系

  • Spring(四):Bean实例化及属性注入_第2张图片

  • 我们一般会使用ClassPathXmlApplication或者FileStreamXmlApplicationContext,不会直接使用BeanFactory

    • ClassPathXmlApplicationContext根据类路径获取  

    • FileStreamXmlApplicationContext根据文件路径获取  

  • 使用ApplicationContext和使用BeanFactory的区别

    • BeanFactory采用的是延迟加载的方式加载bean,只有在去getBean时才会去加载该bean

      •   Spring(四):Bean实例化及属性注入_第3张图片

         

         

      •   Spring(四):Bean实例化及属性注入_第4张图片

         

         

    • ApplicationContext在加载配置文件时就会加载所有的bean
      •   Spring(四):Bean实例化及属性注入_第5张图片

         

         

三、Bean实例化的几种方式

  • 我们最常用的就是无参构造方式去实例化Bean

  • 无参构造方式:

    • 注意这种方式,在bean类中必须提供一个无参的构造函数

    • Spring(四):Bean实例化及属性注入_第6张图片

       

       

  • 静态工厂方式

    • package com.zhurouwangzi.entity;
      ​
      public class PersonFactory {
          public static Person createPerson(){
              return new Person();
          }
      }

       

    • Spring(四):Bean实例化及属性注入_第7张图片

       

  • 实例工厂方式

    • package com.zhurouwangzi.entity;
      ​
      public class PersonFactory {
          public Person createPerson(){
              return new Person();
          }
      }

       

    •  

       

    • 我们运行一下可以看到效果相同

    • Spring(四):Bean实例化及属性注入_第8张图片

       

       

四、属性注入

  • 在spring中属性注入有两种:构造器注入和setter注入

  • 构造器注入

    • 在Person类中添加一个带参的构造函数

    • Spring(四):Bean实例化及属性注入_第9张图片

       

       

    •  

       

    • 运行看效果:

    • Spring(四):Bean实例化及属性注入_第10张图片

    • 注意这里我们无参的构造函数没有被执行

  • setter方法注入

    •  

       

    • Spring(四):Bean实例化及属性注入_第11张图片

    • 注意这里,无参的构造函数被执行了

转载请注明出处:https://www.cnblogs.com/Infancy/p/12588463.html

你可能感兴趣的:(Spring(四):Bean实例化及属性注入)