Spring学习笔记05--使用构造器装配属性

本文介绍Spring框架中使用构造器注入的方式实现依赖注入的过程。通过一个具体示例展示了如何定义带有构造器的Bean,并在配置文件中使用`constructor-arg`标签进行属性注入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring如何使用构造器装配属性


spring依赖注入的3种方式:
1。使用构造器注入
2。使用属性setter方法注入
3。使用Field注入。(这种方式一般用于注解)

依赖注入对象可以采用手工装配或者自动装配,在实际应用中建议使用手工装配,因为自动装配会产生未知的情况,开发人员无法预见最终的装配结果。

使用Setter方法注入前面已经演示过了,这里我们演示如何通过构造器来注入属性
package cn.itcast.service.impl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

import cn.itcast.dao.PersonDao;
import cn.itcast.service.IPersonService;

    //需要注入的两个属性
    private PersonDao personDao;

    private String name;

    //创建包含这两个属性的构造器
    public PersonServiceBean(PersonDao personDao, String name) {
        this.personDao = personDao;
        this.name = name;
    }

    /*
     * (non-Javadoc)
     * 
     * @see cn.itcast.service.impl.IPersonService#save()
     */
    /* (non-Javadoc)
     * 在save()方法中打印name,调用personDao的add()方法,看是否注
     * 入成功
     */
    @Override
    public void save() {
        System.out.println(name);
        personDao.add();
    }
}

beans.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="personDao" class="cn.itcast.dao.impl.PersonDaoBean"></bean>--> 
<bean id="personService" class="cn.itcast.service.impl.PersonServiceBean" scope="prototype" init-method="init"
   destroy-method="destroy">
   <constructor-arg index="0" type="cn.itcast.dao.PersonDao" ref="personDao"/>
   <constructor-arg index="1" value="优快云 Jalen"/>

测试方法如下:

@Test
    public void instanceSpring(){
        //初始化Spring容器
        AbstractXmlApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
        IPersonService personService = (IPersonService) ctx.getBean("personService");
        personService.save();
    }

运行结果:
运行结果

总结:

1。使用constructor-arg标签,对构造器属性进行注入。
2。属性说明:
a. index表示构造器中该参数的索引位置;
b. name 表示构造器中该参数的参数名;
c. type 表示参数的类型(基本数据类型可以不指定,其他类类型需要全类名) 。
d. ref和value表示要注入的值,如果type是类类型,则用ref引用其他的bean 的id,如果是基本数据类型,则用value属性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值