Spring6 DI 依赖注入--Bean属性赋值

Spring6基于XML实现Bean 管理(属性赋值)

IOC和DI有什么区别:DI是IOC中的具体实现,DI表示依赖注入或注入属性,注入属性要在创建对象的基础之上完成

依赖注入方法

bean属性赋值方法只有一种:构造器注入(之所以这么说是为了便于记忆),我们知道构造器有两种:  无参构造,有参构造。这两种方法最终都是要调用set方法完成。

有参构造属性赋值

<!--有参构造注入属性 name-->
<bean id="" class="">
    <!--属性:可以根据有参构造函数的参数名(name),
     值:value 或ref(外部BEAN)引用
-->
    <constructor-arg name="" value=""></constructor-arg>
    <constructor-arg name="" value=""></constructor-arg>
</bean>


 <!-- 使用构造方法注入属性 index -->
<bean id="" class="">
       <!--
       属性:也可以根据使用参数索引 (index)
      值:value 或 ref(外部bean)引用
    -->
        <constructor-arg index="0" ref=""/>
       <constructor-arg index="1" value=""/>
</bean>

 

无参构造属性赋值

无参构造+set方法实现,实体类中要有属性的set 方法和无无参构造函数

<!--set方法注入属性-->
<bean id="" class="">
    <!--使用property完成属性注入
        name:类里面属性名称
        value:向属性注入的值 或ref 外部bean引用
    -->
    <property name="" value=""></property>
    <property name="" value=""></property>
</bean>

 

属性赋值--特殊值

<bean id="" class="">
    <!--设置属性为空-->
    <property name="">
        <null/>
    </property>
    <!-- 属性值包含特殊符号
       
        把带特殊符号内容写到CDATA
    -->
    <property name="">
        <value><![CDATA[任意值]]></value>
    </property>
</bean>

在给属性赋值时,如果对象的属性A类型为对象B,那么可以在A的bean中对B的属性赋值,

<bean id='b' class=''>
    <property name='c' value=''>
</bean>

<bean id='a' class=''>
    <property name='mm' value=''>
    <property name='nn' ref='b'>
    <!-- 给属性的属性赋值 叫做级联赋值-->
    <property name='b.c' value=''>
</bean>


 

Bean标签的其它属性

scope属性值

在spring配置文件bean标签里面有属性scope用于设置单实例还是多实例。


singleton,表示单实例对象: 加载spring配置文件就会创建单实例对象
prototype,表示多实例对象 :在调用getBean方法创建多实例对象。

 autowire自动装配 

 

<bean id="" class ="" autowire="">
</bean>


byName 根据属性名称进行注入,bean的id要和类的属性名称一致
byType 根据类型(class)注入,此时同一个类的bean定义要保证唯一

 

posted on 2023-02-04 09:45  hztech  阅读(58)  评论(0编辑  收藏  举报

导航