1. IoC Service Provider在这里是一个抽象出来的概念,它可以指代任何将IoC场景中的业务对象绑定到一起的实现方式。它可以是一段代码,也可以是一组相关的类,甚至可以是比较通用的IoC框架或者IoC容器实现。Spring的IoC容器就是一个提供依赖注入服务的IoC Service Provider。
IoC Service Provider 的职责 1.业务对象的构建管理。 2. 业务对象间的依赖绑定。
2. Spring的ioc容器只不过是Ioc Service Provider的其中一种实现方式。
3. Spring提供了两种容器类型: BeanFactory和ApplicationContext。
BeanFactory,顾名思义,就是生产Bean的工厂。既然Spring框架提倡使用POJO,那么把每个业务对象看作一个JavaBean对象,或许更容易理解为什么Spring的IoC基本容器会起这么一个名字。
4. BeanFactory只是一个接口,我们最终需要一个该接口的实现来进行实际的Bean的管理,DefaultListableBeanFactory就是这么一个比较通用的BeanFactory实现类。 DefaultListableBeanFactory除了间接地实现了BeanFactory接口,还实现了BeanDefinitionRegistry接口,该接口才是在BeanFactory的实现中担当Bean注册管理的角色。
基本上, BeanFactory接口只定义如何访问容器内管理的Bean的方法,各个BeanFactory的具体实现类负责具体Bean的注册以及管理工作。BeanDefinitionRegistry接口定义抽象了Bean的注册逻辑。通常情况下,具体的BeanFactory实现
类会实现这个接口来管理Bean的注册。
@Test
public void test05(){
AbstractBeanDefinition someService = new RootBeanDefinition(SomeServiceImpl.class);
System.out.println(someService.getBeanClassName());
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
// 将bean定义注册到容器中
beanFactory.registerBeanDefinition("someService", someService);
// 从容器中获取bean实例
ISomeService s = (ISomeService)beanFactory.getBean("someService");
s.doFirst();
}