DI(依赖注入)能够让相互协作的软件组件保持松散耦合,而面向切面编程(aspect-oriented programming,AOP)允许你把遍布应用各处的功能分离出来形成可重用的组件。
在基于Spring的应用中,你的应用对象生存于Spring容器(container)中,Spring容器负责创建对象,装配它们,配置它们并管理它们的整个生命周期,从生存到死亡(在这里,可能就是new到finalize())。
容器是Spring框架的核心。Spring容器使用DI管理构成应用的组件,它会创建相互协作的组件之间的关联。
Spring容器并不是只有一个,Spring自带了多个容器实现,可以归为两种不同的类型:
1. bean工厂(由org.springframework. beans. factory.eanFactory接口定义)是最简单的容器,提供基本的DI支持。(不常用)
2. 应用上下文 (由org.springframework.context.ApplicationContext接口定义)基于BeanFactory构建,并提供应用框架级别的服务,例如从 属性文件解析文本信息以及发布应用事件给感兴趣的事件监听者。
应用上下文
Spring自带了多种类型的应用上下文:
AnnotationConfigApplicationContext:从一个或多个基于Java的配置类中加载Spring应用上下文。
AnnotationConfigWebApplicationContext:从一个或多个基于Java的配置类中加载Spring Web应用上下文。
ClassPathXmlApplicationContext:从类路径下的一个或多个XML配置文件中加载上下文定义,把应用上下文的定义文件 作为类资源。
FileSystemXmlapplicationcontext:从文件系统下的一个或多个XML配置文件中加载上下文定义。
XmlWebApplicationContext:从Web应用下的一个或多个XML配置文件中加载上下文定义。
如果你想从Java配置中加载应用上下文,那么可以使用AnnotationConfig-ApplicationContext:
AnnotationConfig-ApplicationContext通过一个配置类加载bean。 应用上下文准备就绪之后,我们就可以调用上下文的getBean()方法从Spring容器中获取bean。