ClassPathXmlApplicationContext和ClassPathResource之间的区别

时间:2015-01-06 07:31:40

标签: java spring classpath applicationcontext

以下两个语句之间有什么区别,虽然两个语句显然都用于加载xml配置?

ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

Resource resource = new ClassPathResource("applicationContext.xml");
BeanFactory factory = new XmlBeanFactory(resource);

这两者之间是否存在差异(性能,使用情况)?

1 个答案:

答案 0 :(得分:3)

<强>的ClassPathXmlApplicationContext

独立XML应用程序上下文,从类路径获取上下文定义文件,将普通路径解释为包含包路径的类路径资源名称(例如“mypackage / myresource.txt”)。 对于测试工具以及JAR中嵌入的应用程序上下文非常有用。 可以通过AbstractRefreshableConfigApplicationContext.getConfigLocations()覆盖配置位置默认值,Config位置可以表示“/myfiles/context.xml”等具体文件或“/myfiles/*-context.xml”等Ant样式模式(请参阅AntPathMatcher) javadoc用于模式细节)。

注意:如果有多个配置位置,以后的bean定义将覆盖先前加载的文件中定义的bean定义。这可以用来通过额外的XML文件故意覆盖某些bean定义。

这是一个简单,一站式的便利ApplicationContext。考虑将GenericApplicationContext类与XmlBeanDefinitionReader结合使用,以实现更灵活的上下文设置。

<强>使用ClassPathResource

类路径资源的资源实现。使用给定的ClassLoader或给定的Class来加载资源。 如果类路径资源驻留在文件系统中,则支持解析为java.io.File,但不支持JAR中的资源。 始终支持解析为URL。

更多细节请查看API http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/core/io/ClassPathResource.html

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/support/ClassPathXmlApplicationContext.html