参考答案:依赖注入 DI 是一个程序设计模式和架构模型, 一些时候也称作控制反转,尽管在技术上来讲,
依赖注入是一个 IOC 的特殊实现,依赖注入是指一个对象应用另外一个对象来提供一个特殊的能力,例如:
把一个数据库连接已参数的形式传到一个对象的结构方法里面而不是在那个对象内部自行创建一个连接。
控制反转和依赖注入的基本思想就是把类的依赖从类内部转化到外部以减少依赖
应用控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体,将其所依赖的对象的引用,
传递给它。也可以说,依赖被注入到对象中。所以,控制反转是,关于一个对象如何获取他所依赖的对象
的引用,这个责任的反转
* Spring 中 BeanFactory 和 ApplicationContext 的作用和区别
作用:
1. BeanFactory 负责读取 bean 配置文档,管理 bean 的加载,实例化,维护 bean 之间的依赖关系,负责
bean 的声明周期。
2. ApplicationContext 除了提供上述 BeanFactory 所能提供的功能之外,还提供了更完整的框架功能:
a. 国际化支持
b. 资源访问:Resource rs = ctx. getResource(”classpath:config.properties”),
“file:c:/config.properties”
c. 事件传递:通过实现 ApplicationContextAware 接口
3. 常用的获取 ApplicationContext 的方法:
FileSystemXmlApplicationContext:从文件系统或者 url 指定的 xml 配置文件创建,参数为配置文件名或
文件名数组
ClassPathXmlApplicationContext:从 classpath 的 xml 配置文件创建,可以从 jar 包中读取配置文件
WebApplicationContextUtils:从 web 应用的根目录读取配置文件,需要先在 web.xml 中配置,可以配置
监听器或者 servlet 来实现
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>context</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
这两种方式都默认配置文件为 web-inf/applicationContext.xml,也可使用 context-param 指定配置文件
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/myApplicationContext.xml</param-value>
</context-param>
* 在 web 环境下如何配置 applicationContext.xml 文件
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener