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



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="CSDN 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属性。



版权声明:本文为qianwenjun1231原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>