Spring致力于简化企业级Java开发,促进代码松散耦合。成功的关键在于依赖注入和AOP
Spring做的事情,Spring通过面向POJO编程,依赖注入,AOP和模板技术(Spring旨在通过模板封装来消除样板式代码。Spring的JdbcTemplate使得在执行数据库操作时,避免传统的JDBC样板式代码成为了可能。)来简化Java开发的复杂性。Spring在基于XML的配置文件中配置
Bean和切面,但这些文件是如何加载的呢?它们被加载到哪里去呢?让我们在了解下Spring容器,应用中的所有Bean所驻留的地方。
在基于Spring的应用中,应用对象生存于Spring容器中。Spring容器创建对象,装配它们,配置它们,管理它们的整个生命周期,从生存
到死亡(或者从创建到销毁)
并不存在单一的Spring容器。Spring自带了几种容器实现,可以归为两种不同的类型。Bean工厂是最简单的容器(bean factories,由
org.springframework.beans.factory.BeanFactory接口定义),提供基本的DI支持。应用上下文(application由org.springframework.
context.ApplicationContext接口定义)基于BeanFactory之上构建,并提供面向应用的服务,例如从属性文件解析文本信息的能力,
以及发布应用事件给感兴趣的事件监听者的能力。
应用上下文
Spring自带了几种类型的应用上下文。下面罗列的3种是用户最有可能遇到的。
ClassPathXmlApplicationContext---从类路径下的XML配置文件中加载上下文定义,把应用上下文定义文件当做类资源。
FileSystemXmlapplicationcontext---读取文件系统下的XML配置文件并加载上下文定义。
XmlWebApplicationContext---读取Web应用下的XML配置文件并装载上下文定义。
无论是从哪里装载应用上下文,将Bean加载到Bean工厂的过程都是类似的。
通过如下代码加载上下文:
SystemXmlApplicationContext:
ApplicationContext context = new FileSystemXmlApplicationContext("c:/foo.xml");
ClassPathXmlApplicationContext:
ApplicationContext context = new ClassPathXmlApplicationContext("foo.xml");【在所有的类路径(包含JAR文件)下查找foo.xml文件】
通过现有的应用上下文引用,你可以调用应用上下文的getBean()方法从Spring容器中获取Bean