以下两个语句之间有什么区别,虽然两个语句显然都用于加载xml配置?
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
和
Resource resource = new ClassPathResource("applicationContext.xml");
BeanFactory factory = new XmlBeanFactory(resource);
这两者之间是否存在差异(性能,使用情况)?
答案 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。