Spring5学习(二)—— 依赖注入


前言

依赖:Bean对象的创建依赖于Spring容器。
注入:Bean对象的所有属性都由Spring容器注入
依赖注入的三种方式:

  1. 构造器注入
  2. set方法注入
  3. 拓展方法注入

一、构造器注入

即实体类有参构造时,向有参构造器中输入属性值。示例
其在.xml配置文件中注入方式为:

 <bean id="username" class="com.yumi.User">
	<!-- 1.下标赋值 -->
	 <constructor-arg index="0" value="yumi"></constructor-arg>
 </bean>

<bean id="username" class="com.yumi.User">
    <!-- 2.类型创建,但是多个参数为同一类型则无法使用 -->
    <constructor-arg type="java.lang.String" value="yumi"></constructor-arg>
</bean>

    
<bean id="username" class="com.yumi.User" name="u1,u2,u3">
    <!-- 3.直接通过参数名赋值 -->
    <constructor-arg name="username" value="yumi"></constructor-arg>
</bean>

二、set方法注入

即实体类无参构造new User()对象后,再让该对象通过set()方法向实体类中传入属性的值。
罗列不同类型数据在.xml配置文件中的注入方式。

<bean id="address" class="Address"></bean>
<bean id="student" class="Student">
    <!-- 1. 普通注入 -->
    <property name="name" value="yumi"></property>
    
    <!-- 2. Bean注入 -->
    <property name="address" ref="address"></property>
    
    <!-- 3. 数组注入 -->
    <property name="books">
        <array>
            <value>book1</value>
            <value>book2</value>
            <value>book3</value>
        </array>
    </property>
    
    <!-- 4. List注入 -->
    <property name="hobbys">
        <list>
            <value>hobby1</value>
            <value>hobby2</value>
            <value>hobby3</value>
        </list>
    </property>
    
    <!-- 5. Map注入 -->
    <property name="card">
        <map>
            <entry key="card1" value="0123456"></entry>
            <entry key="card2" value="abcdef"></entry>
        </map>
    </property>
    
    <!-- 6. Set注入 -->
    <property name="games">
        <set>
            <value>game1</value>
            <value>game2</value>
            <value>game3</value>
        </set>
    </property>
    
    <!-- 7. null值注入  -->
    <property name="balance">
        <value>null</value>
    </property>
    
    <!-- 8. Properties注入 -->
    <property name="info">
        <props>
            <prop key="key1">value1</prop>
            <prop key="key2">value2</prop>
            <prop key="key3">value3</prop>
        </props>
    </property>
</bean>

三、扩展方法注入

1. p-命名空间

对于无参构造,即set方法注入时使用。

  • 导入依赖
xmlns:p="http://www.springframework.org/schema/p"
  • 格式:简化了property写法。p:属性名=“属性值”
<bean id="username1" class="User" p:username="abc" p:userid="123"/>

2. c-命名空间

对于有参构造,即构造器注入时使用。

  • 导入依赖
xmlns:p="http://www.springframework.org/schema/c"
  • 格式:简化了constructor-arg写法。c:属性名=“属性值”
<bean id="username2" class="User" c:username="abc" c:userid="123"/>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值