码迷,mamicode.com
首页 > 编程语言 > 详细

Spring之对象依赖关系(依赖注入Dependency Injection)

时间:2017-03-13 10:08:32      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:cat   bean   property   dao   private   ack   空间   函数   缺点   

承接上篇:

Spring中,如何给对象的属性赋值:

  1:通过构造函数,如下所示:

<!-- 1:构造函数赋初始值 -->
<bean id="user1" class="com.bie.po.User">
<constructor-arg value="10010" type="int"></constructor-arg>
      <constructor-arg value="张三" type="java.lang.String"></constructor-arg>
</bean>

  2:通过set方法给属性注入值,如下所示:

<!-- 通过set方法给属性注入值,是通过set方法给属性赋值的哦,  通过容器注入值-->
<bean id="user" class="com.bie.po.User">
     <property name="id" value="10010"></property>
     <property name="name" value="李四"></property>
 </bean>   

    2.1:通过set方法实现dao的注入,service的注入,action的注入;如下所示:

       实现上面的前提是已经在对应的类中实现了下面的set方法和私有的类的成员变量的定义;

       比如:在service层的方法中实现UserDao的定义和set方法的实现。

          在action层的方法中实现UserService的定义和set方法的实现。

1 private UserDao userDao;
2     public void setUserDao(UserDao userDao) {
3         this.userDao = userDao;
4     }
1 private UserService userService;
2     public void setUserService(UserService userService) {
3         this.userService = userService;
4     }
1 private UserAction userAction;
2     public void setUserAction(UserAction userAction) {
3         this.userAction = userAction;
4     }

<!-- dao的set注入 -->
<bean id="userDao" class="com.bie.dao.UserDao"></bean>
      
<!-- service的set注入 -->
<bean id="userService" class="com.bie.service.UserService">
      <!-- 处理对象的依赖关系,依赖注入 -->
      <property name="userDao" ref="userDao"></property>
</bean>
    
<!-- action的set注入 -->
<bean id="userAction" class="com.bie.action.UserAction">
      <!-- 处理对象的依赖关系,依赖注入 -->
      <property name="userService" ref="userService"></property>
</bean>   

    2.2:通过内部bean实现dao的注入,service的注入,action的注入;如下所示:

        (缺点,相当于局部变量,service和dao只能使用一次,不方便维护)  

<!-- 内部bean -->
<bean id="userAction" class="com.bie.action.UserAction">
      <property name="userService">
          <bean class="com.bie.service.UserService">
             <property name="userDao">
                 <bean class="com.bie.dao.UserDao"></bean>
             </property>
          </bean>
      </property>

</bean>

  3:p命名空间,如下所示:

    注意:给对象属性注入值也可以通过p名称空间给对象的属性注入值,但是Spring的版本必须是3.0版本以上才可以使用

       必须在applicationContext.xml中引入这句话:xmlns:p="http://www.springframework.org/schema/p"

<!-- 使用p名称空间给对象的属性注入值 -->
<bean id="userDao" class="com.bie.dao.UserDao"></bean>
<bean id="userService" class="com.bie.service.UserService" p:userDao-ref="userDao"></bean>
<bean id="userAction" class="com.bie.service.UserAction" p:userService-ref="userService"></bean>

  4:自动装配,如下所示:

  5:注解,如下所示:

Spring之对象依赖关系(依赖注入Dependency Injection)

标签:cat   bean   property   dao   private   ack   空间   函数   缺点   

原文地址:http://www.cnblogs.com/biehongli/p/6541360.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!