zoukankan      html  css  js  c++  java
  • Spring实现构造注入

    Spring通过setter访问器实现对属性的赋值,这种做法称为设值注入;Spring还提供了通过构造方法赋值的能力,称为构造注入。使用设值注入时,Spring通过JavaBean的无参构造方法实例化对象。

    public class UserServiceImpl implements UserService {
        private UserDao dao;
    
        public UserServiceImpl(UserDao dao){
            this.dao = dao;
        }
    }
    <bean id="userDao" class="edu.cn.dao.Impl.UserDaoImpl"/>
    
    <bean id="userService" class="edu.cn.service.Impl.UserServiceImpl">
        <constructor-arg>
            <ref bean="userDao"/>
        </constructor-arg>
    </bean>

    在Spring的配置文件中将DAO对象以构造注入的方式赋值给业务实例中的UserDao类型的属性。

    一个<constructor-arg>元素表示构造方法的一个参数,且使用时不区分顺序。当构造方法的参数出现混淆、无法区分时,可以通过<constructor-arg>元素的index属性指定该参数的位置索引,索引从0开始。<constructor-arg>元素还提供了type属性用来指定参数的类型,避免字符串和基本数据类型的混淆。

    构造注入的时效性好,在对象实例化时就得到所依赖的对象,便于在对象的初始化方法中使用依赖对象;但受限于方法重载的形式,使用灵活性不足。设值注入使用灵活,但时效性不足,大量的setter访问器还增加了类的复杂性。Spring并不倾向于某种注入方式,用户应该根据实际情况进行合理的选择。当然Spring提供的注入方式不只这两种,只是这两种方式使用的最普遍。

  • 相关阅读:
    在ASP.NET开始执行HTTP请求的处理程序之前
    要在一般处理程序中获取其他页面的session值
    asp.net中session的原理及应用
    INTRAWEB说明书
    ASP.NET万能JSON解析器
    使用 IntraWeb (30)
    IntraWeb例子练习
    【整理】Asp.net HttpWebRequest和HttpWebResponse发送和接受任何类型数据
    Delphi 接口机制真相
    http://www.doc88.com/p-203939126010.html
  • 原文地址:https://www.cnblogs.com/yanguobin/p/11716803.html
Copyright © 2011-2022 走看看