基于xml方式注入属性
DI依赖注入,对象的属性注入值;(spring实现)
第一种实现方式:基于对象属性set方法实现
(基于set方法实现,要求类中有set方法)
    <bean id="userEntity" class="cn.fish9.spring.UserEntity">
        <property name="key1" value="1"></property>
        <property name="key2" value="1"></property>
        <!-可以使用ref来传递对象--->
        <property name="key3" ref="menDao"></property>
    </bean>
Name:类中的属性名称
Value:需要注入属性值
第二种实现方式:基于有参数构造函数实现
    <bean id="userEntity" class="cn.fish9.spring.UserEntity">
        <constructor-arg name="key1" value="value1"></constructor-arg>
        <constructor-arg name="key2" value="value2"></constructor-arg>
    </bean>
`//或者使用索引来替代name
<bean id="userEntity" class="cn.fish9.spring.UserEntity">
<constructor-arg index="0" value="value1"></constructor-arg>
<constructor-arg index="1" value="value2"></constructor-arg>
</bean>`
其中UserEntity类中需要有有参构造方法,如下:
    public UserEntity(String key1,String key2){
    }
使用p标签为属性注入值
(基于set方法实现,要求类中有set方法)
头部xml改成如下
<?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">
    ......
`</beans>`
区别在于添加了
xmlns:p="http://www.springframework.org/schema/p"
使用p标签注入值
<bean id="userEntity" class="cn.fish9.spring.UserEntity" p:key1="123" p:key2="1234">
    </bean>
bean属性注入空值与特殊字符
在bean属性中注入空值,可以在 标签中添加 标签,来表示当前的值为null
    <bean id="userEntity" class="cn.fish9.spring.UserEntity">
        <property name="key1" >
            <null></null>
        </property>
    </bean>
bean属性注入特殊字符的方式
错误写法:
<!--首先下面是错误写法,无法注入特殊字符-->
    <bean id="userEntity" class="cn.fish9.spring.UserEntity">
        <property name="key1" value="<<test>>"></property>
    </bean>
需要注入特殊字符,有两种方式:
①转移特殊符号
<<转移为<<
>>转移为>>
②使用cdata
<bean id="userEntity" class="cn.fish9.spring.UserEntity">
    <property name="key1" >
        <value><![CDATA[<<test>>]]></value>
    </property>
</bean>
spring注入属性外部bean
<!--memberService注入到ioc容器中-->
<bean id="memberService"  class="cn.fish9.spring.MemberService">
<!--
name="membberDao" MemberService类中属性的名称
ref memberDao 在ioc容器中注入的beanid
-->
    <property name="memberDao" ref="memberDao"></property>
</bean> 
<!--MemberDaoImp注入到ioc容器中-->
<bean id="memberDao" class="cn.fish9.spring.MemberDaoImpl"></bean>
spring注入内部bean对象
<bean id="userEntity" class="cn.fish9.spring.UserEntity">
    <!--普通属性注入-->
    <property name="name" value="fish9"></property>
    <property name="addres" value="湖北省武汉市"></property>
    <!--注入内部bean对象-->
    <property name="deptEntity" >
        <bean id="deptEntity" class="cn.fish9.spring.DeptEntity">
            <property name="name" value="教育部门名字"></property>
        </bean>
    </property>
</bean>
级联赋值bean对象
注意:memberDao对象中的属性需要有get方法才能这样传递级联赋值bean对象。
<bean id="memberService"  class="cn.fish9.spring.MemberService">
    <property name="memberDao" ref="memberDao"></property>
    <property name="memberDao.name" value="部门名称"></property>
</bean> 
<bean id="memberDao" class="cn.fish9.spring.MemberDaoImpl"></bean>
注入集合类型属性
 <bean id="stuEntity" class="cn.fish9.spring.entity.StuEntity">
        <property name="list" >
            <list>
                <value>list01</value>
                <value>list02</value>
            </list>
        </property>
        <property name="array" >
            <array>
                <value>array01</value>
                <value>array02</value>
            </array>
        </property>
        <property name="map" >
            <map>
                <entry key="cat" value="test"></entry>
                <entry key="fish" value="ee"></entry>
            </map>
        </property>
        <property name="set" >
            <set>
                <value>array01</value>
                <value>array02</value>
            </set>
        </property>
    </bean></code></pre>
 
注入集合类型为对象
---------
 
```lang-xml
<!--注入list类型为对象类型ref bean-->        
<property name="courser" >
            <list>
                <ref bean="courseEntity_java"></ref>
                <ref bean="courseEntity_c"></ref>
            </list>
        </property>
`<!--下面开始创建需要注入的对象-->
<!--java课程的对象-->
<bean id="courseEntity_java" class="cn.fish9.entity.CourseEntity">
<property name="name" value="java"></property>
</bean>
<!--c课程的对象-->
<bean id="courseEntity_c" class="cn.fish9.entity.CourseEntity">
<property name="name" value="c"></property>
</bean>`
```
 
<br />
51工具盒子