1.控制反转是一种通过xml或注解让第三方去产生或获取特定对象的方式。
在Spring中实现控制反转的是ioc容器,其实现方法是依赖注入。
spring ioc 容器主要是基于BeanFactory和ApplicationContext两个接口。
2.在创建BeanFactory实例时需要提供XML文件的绝对路径
public static void main(String[] args) {
BeanFactory beanFac =new XmlBeanFactory(
new FileSystemResorce("D:/workspace/ch1/src/applicationContext.xml")
);
//通过容器获取test实例
TestDao tt =(TestDao)beanFac.getBean("test"); //test为配置文件中的id
tt.sayHello();
}
3.ApplicationContext是BeanFactory的子接口,也称应用上下文,ApplicationContext接口增加了对国际化、资源访问、事件传播等内容的支持。
创建ApplicationContext接口实例有3种方法:
- 法1-----通过ClassPathXmlApplicationContext创建
ClassPathXmlApplicationContext会从src根目录寻找xml配置文件
public static void main(String[] args) {
//初始化Spring容器ApplicationContext,加载配置文件
ApplicationContext appCon =new ClassPathXmlApplicationContext("applicationContext.xml");
//通过容器获取test实例
TestDao tt =(TestDao)appCon.getBean("test"); //test为配置文件中的id
tt.sayHello();
}
- 法2----通过FileSystemXmlApplicationContext创建 ---不建议使用这种方法
FileSystemXmlApplicationContext会从指定文件的绝对路径中寻找xml配置文件
public static void main(String[] args) {
//初始化Spring容器ApplicationContext,加载配置文件
ApplicationContext appCon =new FileSystemXmlApplicationContext("F:/eclipse-jee-photon-R-win32-x86_64/eclipse/eclipse-workspace/ch1/src/applicationContext.xml");
//ClassPathXmlApplicationContext("applicationContext.xml");
//通过容器获取test实例
TestDao tt =(TestDao)appCon.getBean("test"); //test为配置文件中的id
tt.sayHello();
}
- 法3----通过web服务器实例化ApplicationContext容器
在web服务器实例化ApplicationContext容器时,一般使用基于org.springframework.web.context.ContextLoderListener的实现方式,此方法需要导入spring-web-5.0.2.release.jar包,并且需要在web.xml中配置以下代码
<context-param>
<!-- 加载src目录下的applicationContext.xml文件 -->
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:applicationContext.xml
</param-value>
</context-param>
<!-- 指定以ContextLoaderListener方式启动Spring容器 -->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>