Spring IOC
Spring IOC简介
IOC 全称 Inversion of Control 译:控制反转也可以叫做依赖注入,对象仅仅通过自己的构造函数参数、工厂方法参数或工厂方法返回的对象来定义依赖项(也就是关联对象),然后当IOC容器初始化bean的时候进行注入依赖项的整个过程叫做控制反转,这种方法从根本上反转了bean直接通过构造或ServiceLocator机制实例化或定位依赖项的机制创建对象(所以叫控制反转)
org.springframework.beans和org.springframework.context
包是Spring框架的IoC容器的基础,BeanFactory
接口提供了一种高级配置机制,能够管理任何类型的对象。ApplicationContext是
BeanFactory的子类
扩展了
BeanFactory功能:更容易与Spring的AOP功能集成、消息资源处理(用于国际化)、事件的发布、应用层特定的上下文,如用于web应用程序的WebApplicationContext。
Spring IOC容器简介
org.springframework.context.ApplicationContext
接口表示Spring IoC容器,负责实例化,配置和注入bean,容器通过读取配置元数据,获取其中配置确定的依赖项关系来实例化、配置、注入bean,如图:
配置元数据
配置元数据有三种方式,传统的XML方式,java方式和注解方式。
1、 XML方式:
配置a.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="..." class="..."> <!-- collaborators and configuration for this bean go here --> </bean> <bean id="..." class="..."> <!-- collaborators and configuration for this bean go here --> </bean> <!-- more bean definitions go here --> </beans>
id:单个bean的定义,唯一
calss:该bean的类型,使用全限定名
实例化容器并读取a.xml相关配置以及使用容器获取初始化的bean对象(多个文件用逗号分隔)
ApplicationContext context = new ClassPathXmlApplicationContext("a.xml");
// retrieve configured instance
//第一个参数bean的id,第二个参数bean的类型
PetStoreService service = context.getBean("petStore", PetStoreService.class);
// use configured instance
List<String> userList = service.getUsernameList();
待续...