Spring属性注入整理

目录

1.依赖注入
2.构造注入
3.p命名空间实现属性注入
------------------------------------华丽的分隔线------------------------------------

1.依赖注入

  • 依赖注入也称为控制反转,可以理解为通过容器来实现对属性的赋值

列举几种注入的方式

// JavaBean类型
private User innerBean; 
// List类型
private List<String> list; 
// 数组类型
private String[] array;
// Set类型
private Set<String> set; 
// Map类型
private Map<String, String> map;
// 注入空字符串值 
private String emptyValue; 
// 注入null值
private String nullValue = "init value"; 

在spring配置文件中注入方法如下

/**
 * 属性注入;
 */
<bean id="entity" class="cn.kgc.springtest2.demo2.TestEntity">
    <!--javaBean赋值   也可以使用property的ref属性来赋值-->
    <property name="innerBean">
        <bean class="cn.kgc.springtest2.demo2.User"></bean>
    </property>
    <!--list集合赋值-->
    <property name="list">
        <list>
            <value>第一个数</value>
            <value>第二个数</value>
            <value>第三个数</value>
        </list>
    </property>
    <!--Set赋值-->
    <property name="set">
        <set>
            <value>set中的第一个数</value>
            <value>set中的第二个数</value>
            <value>set中的第三个数</value>
        </set>
    </property>
    <!--array赋值-->
    <property name="array">
        <array>
            <value>array中的第一个数</value>
            <value>array中的第二个数</value>
            <value>array中的第三个数</value>
        </array>
    </property>
    <!--map赋值-->
    <property name="map">
        <map>
            <entry value="美利坚合众国" key="USA"></entry>
        </map>
    </property>
    <!--注入空字符串 ""-->
    <property name="emptyValue">
        <value></value>
    </property>
    <!--注入null ""-->
    <property name="nullValue">
        <null/>
    </property>
</bean>

ps
需要注意的是spring为bean的属性赋值是通过调用属性的setter方法实现的,这种做法称为“设置注入”,而非直接给属性赋值

2.构造注入

  • 在要注入的类中声明有参构造方法
  • 注入方法如下
<bean id="userService" class="cn.kgc.springtest2.demo1.service.UserServiceImpl">
    <!--构造注入-->
    <constructor-arg name="name" value="小明"/>
    <constructor-arg name="age" value="16"/>
    
    /**
    * 方法参数是javaBean类型时,可以通过ref属性来传入一个bean
    * bean的声明;class属性为包路径
    * <bean id="userdao" class="cn.kgc.springtest2.demo1.dao.UserDao">
    */
    <constructor-arg name="userDao" ref="userdao"/>
</bean>

3.使用p命名空间实现属性

  • 使用p命名空间前需要先添加p命名空间的声明
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       //这一行↓
       xmlns:p="http://www.springframework.org/schema/p"
       //那一行↑
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

   /**
    * 这里实现属性注入
    * 这个也是和依赖注入一样,通过setter方法注入
    */
 <bean id="user" class="cn.kgc.springtest2.demo2.User" p:id="1" p:passWord="123456" p:userCode="admin"></bean>
</beans>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值