在实现类中定义参数类型,包括引用类型的参数和基本类型的参数
在applicationContext.xml文件中配置bean
在test文件中编写java程序实现构造器注入的试验
package AppTest;
import com.Alvis.service.ConstructorService;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class App_05 {
public static void main(String[] args) {
// 获取配置
ClassPathXmlApplicationContext cpx = new ClassPathXmlApplicationContext("applicationContext.xml");
// 配置关闭钩子
cpx.registerShutdownHook();
ConstructorService constructorService = (ConstructorService) cpx.getBean("constructorService");
constructorService.run();
}
}
=============================================
实现类已运行
init 已执行
bean 生命周期开启
bean 生命周期开始
bean的生命周期已开启
this is ConstructorService...
this is BookDao ...
this is PaperDao...
name: 小明 age: 90
bean的生命周期已销毁
bean 生命周期已销毁
bean 的生命周期已销毁
destory 已执行
进程已结束,退出代码0
依赖注入方式选择:
IoC容器根据bean所依赖的资源在容器中自动查找并注入到bean中的过程称为自动装配
自动装配的方式:
在applicatinContext.xml文件中配置bean,将自动装配可以将之前的property步骤省略掉:
注意:
不同集合的注入,在xml文件中bean的配置方式会有所不同,具体的方式如下所示:
Array集合注入:
List集合注入:
Set集合注入:
Map集合注入:
Properties集合注入:
具体的实现类程序:
package com.Alvis.impl;
import com.Alvis.ArrayDao;
import java.lang.reflect.Array;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
public class ArrayDaoImpl implements ArrayDao {
// 创建bean的生命周期
public void init() {
System.out.println("bean 的生命周期已开启");
}
// 销毁bean的生命周期
public void destory() {
System.out.println("bean 的生命周期已销毁");
}
// 定义所有类型的集合参数
private int[] array;
private List<String> list;
private Map<String,String> map;
private Set<Integer> set;
private Properties properties;
// 生成其对应的set方法
public void setArray(int[] array) {
this.array = array;
}
public void setList(List<String> list) {
this.list = list;
}
public void setMap(Map<String, String> map) {
this.map = map;
}
public void setSet(Set<Integer> set) {
this.set = set;
}
public void setProperties(Properties properties) {
this.properties = properties;
}
@Override
public void run() {
System.out.println("this is ArrayDao...");
// -------------------输出集合---------------------
System.out.print("Array: ");
for (int i = 0; i < array.length; i++) {
System.out.print(array[i]+" ");
}
System.out.println();
System.out.println("List: "+list);
System.out.println("Set: " + set);
System.out.println("Map: " + map);
System.out.println("Properties: "+properties);
}
}
在test文件中编写java程序实现对集合setter注入的调用:
package test;
import com.Alvis.ArrayDao;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class App_01 {
public static void main(String[] args) {
// 获取配置
ClassPathXmlApplicationContext cpx = new ClassPathXmlApplicationContext("applicationContext.xml");
ArrayDao arrayDao = (ArrayDao) cpx.getBean("arrayDao");
arrayDao.run();
// 设置销毁bean的生命周期
cpx.registerShutdownHook();
}
}
============================================
bean 的生命周期已开启
this is ArrayDao...
Array: 100 200 150
List: [小明, 小红, 小蓝]
Set: [100, 101, 102]
Map: {中国=北京, 日本=东京, 丑国=华盛顿}
Properties: {丑国=华盛顿, 中国=北京, 日本=东京}
bean 的生命周期已销毁
进程已结束,退出代码0