ApplicationContext和BeanFactory的联系和区别
- 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之间的区别。
- 读取的文件不一样,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 {.......}