美文网首页
SpringBean管理——XML方式

SpringBean管理——XML方式

作者: ZHU_WD | 来源:发表于2018-05-16 13:30 被阅读0次

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的两个生命周期方法

<bean id="xxx" class="......" 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.调用<bean init-method=“init”>指定初始化方法init如果存在类实现BeanPostProcessor(处理Bean),执行postProcessAfterInitialization
8.执行业务处理
9.如果Bean实现DisposableBean执行destory

10.调用<bean destory-method=“destory”>指定销毁方法destory

5.DI——属性注入

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

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

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

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

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

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

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

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

4.SpEL的属性注入

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

5.复杂类型的属性注入

<bean id="" class="">
//数组类型的属性注入
  <property name="">
    <list>
      <value>xxx</value>
      <value>xxx</value>
    </list>
  </property>
//List集合类型的属性注入
  <property name="">
    <list>
      <value>xxx</value>
      <value>xxx</value>
    </list>
  </property>
//Set集合类型的属性注入
  <property name="">
    <set>
      <value>xxx</value>
      <value>xxx</value>
    </set>
  </property>
//Map集合类型的属性注入
  <property name="">
    <map>
      <entry key="aaa" value="111" />
      <entry key="bbb" value="222" />
      <entry key="ccc" value="333" />
    </map>
  </property>
//Properties类型的属性注入
  <property name="">
    <props>
      <prop key="username">root</prop>
      <prop key="password">123</prop>
    </props>
  </property>
</bean>

相关文章

  • SpringBean管理——XML方式

    1.三种实例化Bean的方式 使用类构造器实例化(默认无参数) 使用静态工厂方式实例化(简单工厂模式) 使用实例工...

  • spring被@Bean注解的方法是如何变成SpringBean

    概述一下 springframework有很多创建SpringBean的方式,所谓SpringBean就是被spr...

  • SpringBean 配置方式

    上篇文章介绍的IOC的理念与优点,这一章我们介绍如何将自己开发的Bean装配到Spring IOC容器中。 Spr...

  • SpringBean加载机制-注入Bean

    SpringBean加载机制 - 注入Bean 两种IoC容器 xml配置文件加载的容器; 通过注解加载的容器; ...

  • Spring Bean管理(XML方式)

    Spring 的工厂类 Bean实例化的三种方式 使用类构造器实例化(默认无参数) 使用静态工厂方法实例化(简单工...

  • 2-SpringBean管理

    目录G:\8-CodeCloud\spring项目名称spring_ioc项目文件夹com.imooc.ioc.d...

  • Dubbo注册Provider

    一、与Spring的结合 首先spring注册实例让IOC容器管理实例的方式有注解方式,xml的方式。Dubbo中...

  • Dubbo注册Service

    1 与Spring的结合 首先spring注册实例让IOC容器管理实例的方式有注解方式,xml的方式。Dub...

  • Spring的bean管理(xml方式)

    Bean实例化的方式 (1)在spring里面通过配置文件创建对象(2).bean实例化三种方式实现 第一种 使用...

  • Spring 的 Bean 管理(XML 方式)

    Spring 的 Bean 管理(XML 方式) 1. 三种实例化 Bean 的方式 使用类构造器实例化(默认无参...

网友评论

      本文标题:SpringBean管理——XML方式

      本文链接:https://www.haomeiwen.com/subject/yxxpdftx.html