spring应用手册-IOC(XML配置实现)-(21)-constructor-arg标签

戴着假发的程序员出品

constructor-arg标签

spring应用手册(第一部分)


constructor-arg标签和property一样可以通知spring帮我们注入属性。

只不过constructor-arg的配置,spring会通过构造方法注入,这时就需要我们的类中有对应的构造方法。

案例如下:

/**
 * @author 戴着假发的程序员
 * @description
 */
public class AccountService {
    private IAccountDAO accountDAO;//bean的引用类型
    private String appName;//简单类型(String和基本数据类型)

    public AccountService(IAccountDAO accountDAO, String appName) {
        this.accountDAO = accountDAO;
        this.appName = appName;
    }

    public int save(String name){
        System.out.println("AppName:"+appName);
        System.out.println("AccountService-save->保存用户:"+name);
        return accountDAO.save(name);
    }
}

这时我们会发现,我们的类不再需要提供无参数的构造方法了。

配置方式如下:

我们可以根据构造方法形参的名字注入:

    <!-- 注册accountDAO_oracle -->
    <bean id="accountDAO_oracle"  class="com.dk.demo1.dao.impl.AccountDAO_oracle"/>
    <!-- 注册accountService  注入accountDAO_mysql -->
    <bean id="accountService" name="a_service"
          class="com.dk.demo1.service.AccountService">
        <!-- 使用构造方法注入属性 -->
        <constructor-arg name="accountDAO" ref="accountDAO_oracle"/>
        <constructor-arg name="appName" value="spring应用手册"/>
    </bean>

我们也可以根据参数的索引注入属性:

    <!-- 注册accountDAO_oracle -->
    <bean id="accountDAO_oracle"  class="com.dk.demo1.dao.impl.AccountDAO_oracle"/>
    <!-- 注册accountService  注入accountDAO_mysql -->
    <bean id="accountService" name="a_service"
          class="com.dk.demo1.service.AccountService">
        <!-- 使用构造方法注入属性 -->
        <constructor-arg index="0" ref="accountDAO_oracle"/>
        <constructor-arg index="1" value="spring应用手册"/>
    </bean>

当然 constructor-arg还有一个属性type用来指定参数的类型:

    <!-- 注册accountDAO_oracle -->
    <bean id="accountDAO_oracle"  class="com.dk.demo1.dao.impl.AccountDAO_oracle"/>
    <!-- 注册accountService  注入accountDAO_mysql -->
    <bean id="accountService" name="a_service"
          class="com.dk.demo1.service.AccountService">
        <!-- 使用构造方法注入属性 -->
        <constructor-arg type="com.dk.demo1.dao.IAccountDAO"
                         index="0" ref="accountDAO_oracle"/>
        <constructor-arg index="1" value="spring应用手册"/>
    </bean>

通常情况下,spring都会自动识别类型,但是如果一个bean本身拥有多个类型,这时如果我们需要指定特定的类型,就需要使用type指定类型。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

戴着假发的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值