spring之ApplicationContext讲解

136 阅读1分钟

ApplicationContext和BeanFactory的联系和区别

  1. APPlicationContext接口继承了HierachicalBeanFactory接口,而HierachicalBeanFactory接口又继承了BeanFactory接口。因此ApplicationContext比BeanFactory的范围更广,功能更多。
public interface ApplicationContext extends EnvironmentCapable, 
ListableBeanFactory,HierarchicalBeanFactory,MessageSource, 
ApplicationEventPublisher, ResourcePatternResolver { 
......
}
public interface HierarchicalBeanFactory extends BeanFactory {
......}

2.ApplicationContext相对于BeanFactory多了一些获取电脑环境,获取资源,发布事件,国际化等重要功能。

public interface ApplicationContext extends EnvironmentCapable, 
,ResourcePatternResolver,ApplicationEventPublisher, MessageSource{ 
......
}

ClassPathxmlApplicationContext和AnntationConfigApplicationContext之间的区别。

  1. 读取的文件不一样,ClassPathxmlApplicationContext读取的是xml配置文件,而AnntationConfigApplicationContext读取的是配置类中的Class文件。如果用AnnotationConfigApplicationContext读取xml文件,是读取不到的。 2.支持的功能不一样,两者都是继承的AbstractApplicationContext接口。但是中间环节ClassPathxmlApplicationContext继承了AbstractRefreshAbleApplicationContext,所以ClassPathxmlApplicationContext相对于AnntationConfigApplicationContext多了一个刷新(Refresh)接口的功能.此功能类似于重启容器。
public class ClassPathXmlApplicationContext extends AbstractXmlApplicationContext {
....}

public abstract class AbstractXmlApplicationContext
extends AbstractRefreshableConfigApplicationContext {
....}

public abstract class AbstractRefreshableConfigApplicationContext
extends AbstractRefreshableApplicationContext
implements BeanNameAware, InitializingBean {.....}

public class AnnotationConfigApplicationContext
extends GenericApplicationContext
implements AnnotationConfigRegistry {....}

public class GenericApplicationContext
extends AbstractApplicationContext
implements BeanDefinitionRegistry {.......}