Spring开发提倡接口编程,配合IOC或者说DI,可以达到层间解耦的目的
最简单的容器,提供了基础的依赖注入支持。创建各种类型的Bean.
// 从bean工厂取出bean对象:当实例化BeanFactory时,该容器内的bean不会被实例化,只有当使用getBean获取某个bean的时候,才会实时的创建该bean对象 BeanFactory factory = new XmlBeanFactory(new ClassPathResource("applicationContext.xml")); factory.getBean("iDCardService");建立在Bean工厂基础之上,提供系统架构服务。 三种常用到的实现方式:
// ①-ClassPathXmlApplicationContext:从类路径中加载(桌面应用程序中常用) // -实例化applicationContext.xml对应的容器时,其中的bean就被创建了(该bean的scope是singleton) ApplicationContext acc = new ClassPathXmlApplicationContext("applicationContext.xml"); // ②-FileSystemXmlApplicationContext:从文件系统中加载(必须使用绝对路径) ApplicationContext acc = new FileSystemXmlApplicationContext("C:\\Users\\Jiaozl\\Desktop\\codes\\MyEclipseCodes\\MySpring\\src\\applicationContext.xml"); // ③-XmlWebApplicationContext:从web系统中加载(web应用中常用,当Tomcat启动的时候加载) acc.getBean("iDCardService");如果使用ApplicationContext,则配置 的bean如果是singleton,不管用不用,都被实例化(好处是可以预先加载,缺点是耗内存);如果是BeanFactory ,则当实例化该bean对象容器的时候,配置的bean不会马上被实例化,只有使用的时候,才被实例化(好处是节约内存,缺点是速度变慢)。(一般没有特殊要求,应当使用ApplicationContext)