四.Spring4学习-----依赖注入DI

来源:互联网 发布:淘宝发布食品如何备案 编辑:程序博客网 时间:2024/06/05 02:52

一.依赖注入--dependency Injection

依赖:指bean对象创建依赖于容器。Bean对象的依赖资源

注入:指bean对象依赖的资源由容器来设置和装配

DI(Dependency Injection) — IOC 的另一种表述方式:即组件以一些预先定义好的方式(例如: setter 方法)接受来自如容器的资源注入. 相对于 IOC 而言,这种表述更直接

二.Spring注入方式


1.构造器注入----Spring注入

          通过构造方法注入Bean 的属性值或依赖的对象,它保证了 Bean 实例在实例化后就可以使用。
          构造器注入在 <constructor-arg> 元素里声明属性, <constructor-arg> 中没有 name 属性

         

                 可详见上一讲IOC创建对象的三种方式:http://blog.csdn.net/aoaoxiaoxian/article/details/78190623


2.属性注入(setter注入)---- Spring注入

               要求被注入的属性必须有set方法。Set方法的方法名由set+属性首字母大写。如果属性是booolean没有get方法是is

1)常量注入

   <bean id="student" class="cn.sxt.vo.Student">   <property name="name" value="张三丰"></property>   </bean>

2)bean注入

   <bean id="addr" class="cn.sxt.vo.Address"/>   <bean id="student" class="cn.sxt.vo.Student">    <property name="name" value="张三丰"/>    <property name="addr" ref="addr"/>   </bean>

3)数组注入

<bean id="student" class="cn.sxt.vo.Student">    <property name="name" value="张三丰"/>    <property name="addr" ref="addr"/>    <property name="books">        <array>            <value>傲慢与偏见</value>            <value>仲夏夜之梦</value>            <value>雾都孤儿</value>        </array>    </property>
 </bean>

4)List注入

<property name="hobbies">        <list>            <value>羽毛球</value>            <value>乒乓球</value>            <value>玻璃球</value>            <value>台球球</value>        </list></property>

5)Map注入

<property name="cards"><map><entry key="中国银行" value="149127348932174"/><entry><key><value>建设银行</value></key><value>622710023478234234</value></entry></map></property>

6)set注入

<property name="games"><set><value>lol</value><value>dota</value><value>cs1.6</value><value>dnf</value></set></property>

7)Null注入

<property name="wife"><null/></property>

8)Properties注入

       <property name="info"><props><prop key="学号">2015052601</prop><prop key="sex">男</prop><prop key="name">小明</prop></props></property>

9)p命名空间的注入

<!-- p命名空间注入 属性依然要设置set方法 --><bean id="user" class="cn.sxt.vo.User" p:name="风清扬" p:age="230"/>

10)c命名空间注入

<!-- c命名空间注入要求有对应参数的构造方法 --><bean id="u1" class="cn.sxt.vo.User" c:name="nico" c:age="16"/>