控制反转(Inversion of Control)和依赖注入(Dependency Injection)讲的都是一个概念,只不过是站在了不同的角度,所谓的依赖注入:
依赖注入(DI)是指在运行期,由外部容器动态地将依赖对象注入到组件中。当spring容器启动后,spring容器初始化,创建并管理bean对象,以及销毁它。所以我们只需从容器直接获取Bean对象就行,而不用编写一句代码来创建bean对象。这种现象就称作控制反转(Ioc),即应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转。
下面介绍各种类型属性的注入方式:
新建实体类Student:
public class Student { //基本数据类型的变量 private String name; //对象类型的变量,Address类代码(只有一个属性 private String addr() setter() getter()) private Address address; //数组类型的变量 private String[] hobby; //list类型的变量 private Listbooks; //Map类型的变量 private Map cards; //set类型的变量 private Set movies; //Properties类型的变量 private Properties info; public void show(){ System.out.println("name:"+name+"地址:"+address.getAddr()); System.out.println("爱好有:"); for(int i=0;i
配置文件beans.xml:
吃饭 睡觉 打豆豆
时光旅行者的妻子 白发魔女传 谁的青春不迷茫 疯狂动物城 叶问3 功夫熊猫 20124280 三年二班 不详
测试代码:
@Test public void test1(){ ApplicationContext context=new ClassPathXmlApplicationContext("beans.xml"); Student s=(Student)context.getBean(Student.class); s.show(); }
打印结果:
name:张三丰地址:青岛
爱好有:吃饭睡觉打豆豆喜欢的书籍:[时光旅行者的妻子, 白发魔女传, 谁的青春不迷茫]拥有的银行卡{农行卡=62284832128534, 建行卡=62284867867984}喜欢的电影[疯狂动物城, 叶问3, 功夫熊猫]身份信息:{学号=20124280, 性别=不详, 班级=三年二班}