Spring IOC之参数

测试账号 2020-12-26 15:59 703阅读 0赞

1.Bean
  1.配置项
    1.id 2.class 3.scope 4.constructor arguments 5.properties
    6.autowiring mode 7.lazy-initalization mode 8.initalization/destruction method
  2.作用域
    1.singleton(默认)
     单例,指一个Bean容器中只存在一份
     简而言之:
        以单例模式创建的bean对象,在beans容器(IOC容器可以加载多个beans容器的配置文件)中的对象都是同一个内存地址对象
    2.prototype
      原型,每次请求(每次使用)创建新的实例,destroy方式失效(因为没有用到的实例会被垃圾回收,不需要调用destroy())
      懒加载失效
      简而言之:
        同上,不过不同的地方在于,prototype原型是new不同的对象内存地址(结合Object类的hashcode()方法来判断内存地址)
    3.request
      请求,每次http请求创建一个实例且仅在当前request内有效
    4.session
      会话,每次http请求创建,当前session内有效(同request)
    5.global session
      基于portlet的web中有效(portlet定义了global session),如果是在web中,同session
  3.生命周期
    1.定义
      在xml配置文件定义
    2、初始化
      1.三种方式
        1.在xml配置文件中,定义bean的时候,配置init-method
          
          这个方法属于class的初始化的方法
          当ioc容器加载xml配置文件并初始化bean的时候,就会根据init-method指令调用该bean类里面的相应方法进行初始化
      2.实现org.springframework.beans.factory.initialBean的接口并复写afterPropertiesSet()方法;
          当ioc容器加载bean的时候,判断该类是否实现了initializingBean这个接口,(前提:该类先bean注入进bean容器)
          如果实现了该接口,就会自动调用afterPropertiesSet()方法,然后这个方法里面就会执行初始化的操作
      3.如下
    3.使用
      1.获取bean生成实例,然后调用里面的成员
    4、销毁
      1.三种方式
        1.在xml配置文件中,定义bean的时候,配置destroy-method
          
          这个方法属于class的初始化的方法
          当ioc容器加载xml配置文件并初始化bean的时候,就会根据destroy-method指令调用该bean类里面的相应方法
        2.实现org.springframework.beans.factory.DispsableBean的接口并复写destroy()方法;
         当ioc容器加载bean的时候,判断该类是否实现了DispsableBean这个接口,(前提:该类先bean注入进bean容器)
         如果实现了该接口,就会自动调用destroy()方法,然后这个方法里面就会执行销毁的操作
        3.如下
          全局的初始化和销毁方法:
          
            
            

          

          当三种方法一起使用的时候,全局默认的就会失效,而实现接口的会优先于手动配置的
2.Aware
   1.Spring中提供了一些以Aware结尾的接口,实现了Aware接口的bean在被初始化之后,可以获取相应资源
   2.通过Aware接口,可以对Spring相应资源进行操作(一定要慎重)
   3.为对Spring进行简单的扩展提供了方便的入口
    简而言之:
      就是用来获取IOC容器/bean容器里的bean资源
   4.两种接口
      前提:
        都需要先在xml配置文件配置该类的bean
        1.applicationContextAware
          实现了该接口的类,会获取到IOC容器的全局上下文applicationContext
          然后,applicationContext.getBean(“id_name”)拿到bean对象。。。。。。多种方式
        2.BeanNameAware
          实现了该接口的类,会获取到bean容器的BeanName
          主要用来获取该类注入在bean容器里面的id_name的名字,再用该名字来生成该bean对象
3.Autowiring
  (自动装配,相当于设值注入、构造注入的结合体;其也是一种注入方式,为属性赋值)
  (前提:把该类注入bean容器中)
    1.常用参数
      1.no(默认):不做任何操作
      2.byName:根据属性名自动装配
       在IOC容器中,找到与该属性名相同的bean的id名字(id相关),通过JavaBean的setName()给属性赋值;(类似设值注入)
      3.byType:1.如果容器中存在一个与指定属性类型相同的bean,那么将与该属性自动装配
           2.如果存在多个该类型bean,那么抛出异常,并指出不能使用byType方式进行自动装配
           3.如果没有找到相匹配的bean,则什么事都不会发生
           在IOC容器中,找到与该属性名相同的bean的class(类路径相关),通过JavaBean的setName()给属性赋值;(类似设值注入)
           4.Constructor:与byType方式类似(与bean的id名无关,与bean的class相关),不同之处在于它应用于构造器参数
            如果容器中没有找到与构造器参数类型一致的bean,那么抛出异常
    2.全局配置:
      
        
        

      

4.Resources
  (针对资源文件的统一接口)
    1.作用:
      可以用Resources可以完成Spring资源文件的加载
    2.分类
      1.UrlResources:URL对应的资源,根据一个URL地址即可构建
      2.ClassPathResources:获取类路径下的资源文件
      3.FileSystemResources:获取文件系统里面的资源
      4.ServletContextResources:ServletContext封装的资源,用于访问ServletContext环境下的资源
      5.InputStreamResources:针对于输入流封装的资源
      6.ByteArrayResources:针对于字节数组封装的资源
    3.ResourceLoader
      1.作用
       对Resources加载的接口,所有的applicationContext(IOC容器全局上下文)都实现这个接口
       简而言之:
          applicationContext拥有了Resources的接口,有了applicationContext,就相当于有了applicationContext
       (前提:先可以通过Aware获取applicationContext;再用applicationContext操作Reasouces)
      2.前缀
        1.classpath:(相对路径)
        2.file:(绝对路径)
        3.http:(网络方式)
        4.no(依赖applicationContext的路径,applicationContext也是一种classpath的方式)
      3.例子
        applicationContext.getResource(“前缀”)

发表评论

表情:
评论列表 (有 0 条评论,703人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Spring学习IoC

    到spring,大家都会津津乐道,什么依赖注入,什么控制反转,但是真的深入过源码了解吗,深入看过英文文档吗,自己尝试写过ioc吗,我相信大多数人都是没有的,我也是如此,所...

    相关 SpringIOC

    2.1、IOC本质控制反转 IoC(Inversion of Control),是一种设计思想,DI(依赖注入)是实现Ioc的一种方法,也有人认为DI只是oC的另一种说法

    相关 SpringIOC

    spring容器 spring容器的概念,容器这个名字起的相当好,容器可以放很多东西,我们的程序启动的时候会创建spring容器,会给spring容器一个清单,清单中列出

    相关 SpringIOC

    高内聚,低耦合 内聚是指模块内部成员之间的联系。耦合是指模块与模块之间的联系。 IOC:控制反转(Inversion of Control,英文缩写为IoC)是一