Spring-5,配置bean

来源:互联网 发布:网络创意 卖给 编辑:程序博客网 时间:2024/05/17 08:30

Spring管理的所有bean和他们之间的依赖关系都在配置文件中定义。

三种注入方式

  1. 属性注入
    通过setter方法注入bean的属性值或者依赖的对象
    属性注入在bean的配置文件中使用perperties节点,name指定属性名,value指定属性值
  2. 构造器注入
    通过构造器注入bean的属性或者依赖的对象,保证bean实例从容器中取出来就可用。
    构造注入在constructor-arg元素中声明属性,没有name属性
  3. 工厂方法注入

属性注入

列表内容

    <!-- 配置bean -->    <!-- class:bean的全类名,通过反射的方式在IOC容器里面创建bean,要求bean提供一个默认的无参构造器 -->    <!--id:标识bean,获取bean时使用,id唯一。 -->    <bean id="helloworld" class="com.tuxianchao.spring.beans.HelloWorld">        <!-- 属性注入即通过setter方法注入属性值或者依赖的对象 (要有setter方法) -->        <property name="name" value="Spring"></property>    </bean>

构造器注入

这里写图片描述

<!-- 通过构造器注入 -->    <!-- 构造器注入即通过构造器注入属性值或者依赖的对象(要有对应的构造方法) -->    <!-- 使用constructor-arg的index(位置)和type(变量类型)属性来匹配重载的构造器 -->    <bean id="car" class="com.tuxianchao.spring.beans.Car">        <constructor-arg index="0" value="AUDI"></constructor-arg>        <constructor-arg>            <value>baoma</value>        </constructor-arg>        <constructor-arg>            <!--属性值也可以使用value子节点类配置 -->            <value>500000</value>        </constructor-arg>    </bean>

配置bean的其他细节

字面值

<bean id="car" class="com.tuxianchao.spring.beans.Car">        <constructor-arg index="0" value="AUDI"></constructor-arg>        <!-- 字面值:可以使用字符串来表示的值,可通过value元素或者value属性注入 -->        <!-- 基本数据类型,字符串都可以采取字面值注入 -->        <!-- 对于特殊字符可以使用<![CDATA]>包裹起来再使用 -->        <constructor-arg>            <value><![CDATA[<baoma>]]></value>        </constructor-arg>        <constructor-arg>            <!--属性值也可以使用value子节点类配置 -->            <value>500000</value>        </constructor-arg>    </bean>

引用其他bean

对于bean的属性依赖其他对象,可以通过ref标签来引用其他bean

<bean id="person" class="com.tuxianchao.spring.beans.Person">        <property name="name" value="zhangsan"></property>        <property name="age" value="20"></property>        <!--引用其他外部bean -->        <!--通过rel属性引用其他对象添加依赖关系 -->        <property name="car" ref="car"></property>    </bean>

使用内部bean

<bean id="person2" class="com.tuxianchao.spring.beans.Person">        <property name="name" value="lisi"></property>        <property name="age" value="22"></property>        <property name="car">            <!-- 使用内部bean -->            <!-- 对于只在某个对象内部使用的bean,可使用内部bean,无需id属性,外部不可见 -->            <bean class="com.tuxianchao.spring.beans.Car">                <constructor-arg value="kia"></constructor-arg>                <constructor-arg value="koera"></constructor-arg>                <constructor-arg value="10000"></constructor-arg>            </bean>        </property>    </bean>

注入null

<!--专有标记<null/>:为属性赋值为null -->        <!-- <property name="car"> <null /> </property> -->

级联配置属性

<bean id="person3" class="com.tuxianchao.spring.beans.Person">        <constructor-arg value="wangwu"></constructor-arg>        <constructor-arg value="24"></constructor-arg>        <constructor-arg ref="car"></constructor-arg>        <!-- 为级联属性赋值,在当前bean中设置依赖的bean的属性 -->        <!-- 需要先为属性赋值,然后再为级联的属性赋值,否则会产生错误 -->        <property name="car.brand">            <value>JEEP</value>        </property>    </bean>
0 0
原创粉丝点击