IOC(Inverse Of Control)控制反转 : 所谓控制反转就是把创建对象(bean),和维护对象(bean)的关系的权利从程序中转移到spring的容器(applicationContext.xml),而程序本身不再维护。
DI(Dependency Injection)依赖注入: 实际上DI和IOC是同一个概念,spring设计者认为DI更准确表示spring核心技术。
1、从ApplicationContext中获取bean对象
ApplicationContext ac = new ClassPathXmlApplicationContext("com/hsp/ioc/beans.xml");
Student st = (Student)ac.getBean("student");
2、从BeanFactory中获取bean对象
BeanFactory factory = new XmlBeanFactory(new ClassPathResource("com/hsp/ioc/beans.xml"));
factory.getBean("student");
获取bean对象两种方式的总结:
1.如果使用ApplicationContext,则配置的bean如果是 singlton不管你用不用,都被实例化.(好处就是可以预先加载,缺点就是耗内存);
2.如果是 BeanFactory ,则当你获取beanfacotry时候,配置的bean不会被马上实例化,当你使用的时候,才被实例(好处节约内存,缺点就是速度);
3.规定: 一般没有特殊要求,应当使用ApplicatioContext完成(90%)。
Bean的作用域: