SpringIOC

Bean的生命周期

  • 名称:init-method,destroy-method
  • 类型:属性
  • 归属:Bean标签
  • 作用:定义ben对象在初始化或销毁时完成工作
  • 取值:bean对应的类中对应的方法名
  • 规则:
    • 当scop=“singleton”单例时,spring容器中且有且仅有一个对象,init方法在创建容器时仅执行一次
    • 当scop=“prototype”为非单例时,spring容器要创建同一类型的多个对象,itit方法会在创建每个对象时执行一次
    • 当scop=“singleton”单例时,关闭容器会导致bean实例被销毁,调用destroy方法一次
    • 当scop="prototype"为非单例时,对象的销毁由垃圾回收机制gc()控制,destroy不会执行,spring只负责创建,而销毁不会由spring来管理

依赖注入

set注入(主流)

  • 名称:property
  • 类型:标签
  • 归属:bean标签
  • 作用:使用set方法的形式为bean提供资源
  • 基本属性:
<bean>  
    <property name="propertyName" value="propertyValue" ref="beanId">
bean>
    name:对应bean中的属性名,要求该属性必须提供可访问的set方法
    value:设定非引用类型属性对应的值,不能与ref同时使用,可以是八大数据类型和string
    ref:设定引用类型属性对应的值,不能与value同时使用

构造器注入

  • 名称:constructor-arg

  • 类型:标签

  • 归属:bean标签

  • 作用:使用构造方法的形式为bean提供资源,兼容早期遗留系统的升级工作

    <bean>  
        <constructor-arg name="argsName" value="argsValue">
    bean>
        name:对应bean中的构造方法所携带的参数名
        value:设定非引用类型构造方法参数对应的值,不能与ref同时使用
       注意:一个bean中科院有多个constructor-arg标签
    

集合类型数据注入

  • 名称:array,list,set,map,props

  • 类型:标签

  • 归属:property标签或constructor-arg标签

  • 作用:注入集合数据类型属性

ApplicationContext和BeanFactory有什么区别?

1.BeanFactory创建bean采用延迟加载形式,也就是说你需要getBean()才会加载

2.ApplicationContext创建Bean默认采用立即加载,ApplicationContext继承了BeanFactory

如何控制Bean的加载顺序?

使用@DependsOn即可控制Bean的加载顺序

  • 配置在方法上,将优先于@Bean配置的bean进行加载
  • 配置在类上,将优先于当前类中所有@Bean配置的Bean进行加载
  • 配置在类上,将优先于@Compent等配置的Bean进行加载
  • 相关属性:value(默认),设置当前bean所依赖的bean的id

你可能感兴趣的:(java,spring,开发语言)