IOC(Inversion Of Control):控制反转。创建对象由以前的程序员自己new 构造方法来调用,变成了交由Spring创建对象,将创建对象管理对象的权限反转,教给spring容器控制。
DI 依赖注入 Dependency Inject. 简单地说就是拿到的对象的属性,已经被注入好相关值了,直接使用即可。
配置文件xml:
如下图是创建了两个bean,第二个ref=""注入类对象category1。。。有的写得是name,有的是id
(bean中的id和name的区别?试过了都可以加载。。。目前得到的解释:xml配置文件中<bean>标签的id属性和name属性基本上没有什么区别,但是使用id会更加符合规范,因为xml中id要求是唯一的。如果一个bean只配置了name属性,但是没有配置ID属性,默认会ID属性=name属性)。这个id相当于对象的一个标识号,通过getBean(“xml文件中定义的id”)来创建对象。class:为类路径。
加载配置文件:
加载配置文件通过getBean(“xml文件中定义的id”);
ApplicationContext ac = new ClassPathXmlApplicationContext(“applicationContext.xml”)
如果是两个以上的配置文件:
ApplicationContext ac = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml","dao.xml"});
或者使用通配符:加载当前路径下所有的xml文件
ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:/*.xml");
比较:
传统方式:通过new 关键字主动创建一个对象
IOC方式:对象的生命周期由Spring来管理,直接从Spring那里去获取一个对象。 IOC是反转控制 (Inversion Of Control)的缩写,就像控制权从本来在自己手里,交给了Spring
比喻:
传统方式:相当于你自己去菜市场new 了一只鸡,不过是生鸡,要自己拔毛,去内脏,再上花椒,酱油,烤制,经过各种工序之后,才可以食用。
IOC:相当于去馆子(Spring)点了一只鸡,交到你手上的时候,已经五味俱全,你就只管吃就行了。。。