2015-01-06 50 views
0

以下兩條語句雖然都明顯用於加載xml配置,但它們之間有什麼區別?ClassPathXmlApplicationContext和ClassPathResource之間的區別

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

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

有這兩者之間有什麼區別(WRT性能,用途)?

+0

閱讀參考指南,其具有[第(http://docs.spring.io/spring/docs/current/spring- framework-reference/html/beans.html#context-introduction-ctx-vs-beanfactory)。主要區別在於'BeanFactory'和'ApplicationContext'。 –

+0

請注意,*這些都不是特別好的做法一段時間了。使用Spring Boot作爲獨立應用程序,以及JavaConfig或'@ ImportResource'。 – chrylis

回答

3

的ClassPathXmlApplicationContext

獨立XML應用程序上下文,從類路徑服用上下文定義文件,解釋滑動路徑,其包括包路徑(例如,「mypackage的/ myresource.txt」)類路徑資源名稱。 對測試線束以及嵌入JAR中的應用程序上下文很有用。 配置位置默認值可以通過AbstractRefreshableConfigApplicationContext.getConfigLocations()來覆蓋,配置位置可以表示具體文件,如「/myfiles/context.xml」或Ant樣式模式,如「/myfiles/*-context.xml」(請參閱AntPathMatcher javadoc獲取模式詳細信息)。

注意:如果有多個配置位置,稍後的bean定義將覆蓋在先前加載的文件中定義的定義。這可以用來通過額外的XML文件故意重寫某些bean定義。

這是一個簡單的一站式便捷的ApplicationContext。考慮將GenericApplicationContext類與XmlBeanDefinitionReader結合使用,以實現更靈活的上下文設置。

使用ClassPathResource

資源實現類路徑資源。使用給定的ClassLoader或給定的Class來加載資源。 如果類路徑資源駐留在文件系統中,但不支持JAR中的資源,則將解析支持爲java.io.File。始終支持解析爲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