SpringBean管理——XML方式

1.三种实例化Bean的方式

  • 使用类构造器实例化(默认无参数)
  • 使用静态工厂方式实例化(简单工厂模式)
  • 使用实例工厂方式实例化(工厂方法模式)

2.Bean的常用配置

  • id和name
    1.一般情况下,装配一个Bean时,通过指定一个id属性作为Bean的名称
    2.id属性在IOC容器中必须是唯一的
    3.如果Bean的名称中含有特殊字符,就需要使用name属性
  • class
    用来设置一个类的完全路径名称,主要作用是 IOC容器生成类的实例
  • scope
    指定Bean的作用域
  • init-method
    指定Bean初始化时的方法
  • destory-method
    指定Bean销毁时的方法,scope=singleton(单例模式)时有效

3.Bean的作用域(由scope属性来指定)

  • singleton(默认值)
    在SpringIOC容器中仅存在一个Bean实例,Bean以单例的方式存在
  • prototype
    每次调用getBean()时都会返回一个新的实例(一般在整合Struts的时候,需要把action配置成多例模式)
  • request
    每次HTTP请求都会创建一个新的Bean,该作用域仅适用于WebApplicationContext环境
  • session
    同一个HTTP Session共享一个Bean,不同的HTTP Session使用不同的Bean。该作用域仅适用于WebApplicationContext环境

4.Bean的生命周期

Spring初始化Bean或销毁Bean的时候,有时需要做一些处理工作,因此Spring可以在创建或销毁Bean时调用Bean的两个生命周期方法

init-method="init" destory-method="destory">
当bean被载入到容器的时候调用init;
当bean从容器中删除的时候调用destory(scope=singleton时有效)
1.instantiate bean对象实例化
2.populate properties封装属性
3.如果Bean实现BeanNameAware执行setBeanName
4.如果Bean实现BeanFactoryAware或者ApplicationContextAware设置工厂setBeanFactory或者上下文对象setApplicationContext
5.如果存在类实现BeanPostProcessor(后处理Bean),执行postProcessBeforeInitialization,可以对我们的类进行增强
6.如果Bean实现InitializingBean执行afterPropertiesSet
7.调用指定初始化方法init如果存在类实现BeanPostProcessor(处理Bean),执行postProcessAfterInitialization
8.执行业务处理
9.如果Bean实现DisposableBean执行destory

10.调用指定销毁方法destory

5.DI——属性注入

对于类成员变量,注入方式有三种:

  • 构造函数注入
  • 属性setter方法注入
  • 接口注入
    Spring支持前两种

1.构造方法的属性注入:

  • 通过构造方法注入Bean的属性值或依赖的对象,它保证了Bean实例在实例化后就可以使用
  • 构造器注入在元素里生成的属性

2.set方法的属性注入(常用):

  • 使用set方法注入,在Spring配置文件中,通过设置注入的属性,普通类型的值使用value,对象类型的值使用ref

3.P名称空间的属性注入

  • 使用p命名空间
  • 为了简化xml文件配置,Spring从2.5开始引入一个新的p名称空间
  • p:<属性名>="xxx"引入常量值
  • p:<属性名>-ref="xxx"引用其他bean对象
  • beans中需加入: xmlns:p="http://www.springframework.org/schema/p"

4.SpEL的属性注入

  • SpEL:spring expression language,spring表达式语言,对依赖注入进行简化
  • 语法:#{表达式}
  #{'hello'} :使用字符串
  #{beanId}:使用另一个bean
  #{beanId.方法名()}:使用指定名属性,并使用方法
  #{T(java.lang.Math).PI}:使用静态字段或方法

5.复杂类型的属性注入


//数组类型的属性注入
  
    
      xxx
      xxx
    
  
//List集合类型的属性注入
  
    
      xxx
      xxx
    
  
//Set集合类型的属性注入
  
    
      xxx
      xxx
    
  
//Map集合类型的属性注入
  
    
      
      
      
    
  
//Properties类型的属性注入
  
    
      root
      123
    
  

你可能感兴趣的:(SpringBean管理——XML方式)