1.IOC接口设计
1.IOC接口设计以BeanFactory和ApplicationContext为核心,分两设计路线
1.1从BeanFactory到ConfigurableListableBeanFactory(Beans jar包)
1.2以ApplicationContext为核心接口,从BeanFactory到ApplicationContext,再到ConfigurableApplicationContext(Context jar包),并且为了可以在Web环境下使用,实现了WebApplicationContext。
2.BeanFactory是一种最基本的IOC容器,包含了IOC最基本的功能。
3.ApplicationContext通过继承MessageSource、ResourcePatternResolver、ApplicationEventPublisher、EnvironmentCapable接口,在BeanFactory简单的IOC容器基础上添加了许多高级容器的特性。也就是说基本上ApplicationContext除了包含IOC基本的功能外,还附加了更高级的功能,并且更好扩展性更强。应用中可以ApplicationContext使用为主。
4.如下图是IOC接口设计图
2.BeanFactory
主要的BeanFactory有XmlBeanFactory(Spring建议弃用,可以使用DefaultListableBeanFactory编程实现)和DefaultListableBeanFactory(重要,后续ApplicationContext的内置BeanFactory对象是这个类)。
IOC容器实现的三个关键类:Resource、BeanFactory、BeanDefinitionReader。
IOC编程式实现大致步骤如下(即XmlBeanFactory的实现方式)
1. ClassPathResource res = newClassPathResource(“beans.xml”);
2.DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
3.XmlBeanDefinitionReader reader = newXmlBeanDefinitionReader(fatory);
4.reader.loadBeanDefinitions(res);
如下图是BeanFactory类图