我一直在讀Spring,它一直在討論你需要的彈簧配置數據,但是你把這個xml文件放在哪裏?你將它保存爲什麼?我似乎無法在任何地方找到這些信息。Spring配置
Spring配置
回答
比這裏更重要的是,這個問題應該是給你的:這個'配置數據'究竟是什麼?
從docs:
Spring IoC容器消耗配置元數據的一種形式;此配置元數據表示作爲應用程序開發人員如何告訴Spring容器在您的應用程序中實例化,配置和組裝對象。
配置元數據傳統上以簡單直觀的XML格式提供,這是本章的大部分內容用來傳達Spring IoC容器的關鍵概念和功能。
但是,您也可以使用annotations或Java-based configuration爲您的POJO提供配置元數據。
在Spring中,構成應用程序的主幹和由Spring IoC容器管理的對象稱爲bean。 bean是一個實例化,組裝並由Spring IoC容器管理的對象。否則,bean只是應用程序中衆多對象中的一個。 Bean和它們之間的依賴關係反映在容器使用的配置元數據中。
由於Tnem已經提到,here你可以找到如何在不同場景下實例化一個容器。
這是什麼IoC容器?
IoC(控制反轉)和DI(依賴注入)是由Martin Fowler創建的術語,關於Spring請參閱first section of the docs。
如果你想用Spring進行開發,我鼓勵你閱讀整篇文章。
+ +1參考Martin Fowler – bpgergo 2011-06-09 07:53:37
我也發現很難找到有關spring web應用程序命名的配置文件的參考。參考文獻一直在討論「beans」文件的內容,但不是其名稱上的單詞。閱讀我發現它有一個CoC行爲:它首先查找一個名爲applicationContext.xml的文件。然後它查看web.xml上下文參數。搜索參考文獻時,從未提及「CoC」這個詞。我想就這個問題做出明確的迴應。 – AgostinoX 2011-07-28 08:50:44
@AgostinoX:XML文件的名稱並不重要 - 內容是。 Spring允許您爲配置文件命名無論如何,您會發現方便 - 這就是配置文件的名稱在文檔中從未提及的原因。一般來說,我同意@abalogh首先你必須決定你想如何配置它,而不是在哪裏放置配置元數據。 'applicationContext.xml'只是一個簡單的配置文件的默認名稱,如果你沒有傳遞任何自定義的名字,但並不意味着你必須使用這個名字。 – Roadrunner 2011-07-28 12:55:28
正如其他人指出的那樣,Spring配置文件的名字並不是很重要。真正的問題是如何加載這個文件。 在獨立應用程序中,您可以使用類似ClassPathXmlApplicationContext類的方法明確地執行此操作,如this part of the Spring documentation中所述。
在Web應用程序中,通常在Web中進行配置。xml文件,通過添加配置監聽器的定義以及可能的配置文件。這是我使用的設置:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:appContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
這讓我把配置文件中的任何地方我都喜歡,只要它是在應用程序的類路徑。你甚至可以在param-value元素中指定幾個配置文件,用空格分隔它們。
那麼,如果有一個「官方」的名字,那麼我想它應該來自春天的傢伙自己。並且Spring設置合格的Spring項目的首選工具是Roo,看起來there我們發現SRC_MAIN_RESOURCES/META-INF/spring/applicationContext.xml
(其中SRC_MAIN_RESOURCES
是在Maven2項目中用於src/main/resources
的placehiolder)。
+1,告訴我在哪裏將'applicationContext.xml'文件放入使用Maven的獨立應用程序中! – 2012-05-18 13:52:07
比純名稱更有趣的是你如何分割文件(並給每個部分一個名字)。
如果您有獨立測試或Web應用測試,那麼您可以將所有配置放在一個文件中。 - 但沒有測試不應該是一個意見。
讓我們假設您有一個包含測試的Web應用程序。
然後,您應該將配置拆分爲兩個文件,一個用於純java(沒有web suff)配置,另一個包含用於WEB應用程序的所有其他內容。
我個人傾向於將其命名爲applicationContext.xml和webmvc-config.xml。 的Web配置文件的默認名稱(如果爲調度的Servlet沒有specifed)將/WEB-INF/<servletname>-servlet.xml
)
我找到的applicationContext.xml中classpath:/META-INF/spring
目錄和WEB-INF/spring
的webmvc-config.xml中。那個位置是Spring Roo的風格。它可以工作,但其他所有文件夾也可以工作。因爲我使用Maven的文件的確切位置是:
/src/main/resources/META-INF/spring/applicationContext.xml
/src/main/webapp/WEB-INF/spring/webmvc-config.xml
核心的applicationContext.xml裝有org.springframework.web.context.ContextLoaderListener
,並通過Dispatacher的webmvc-config.xml中Servlet的。 web.xml
:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:META-INF/spring/applicationContext*.xml</param-value>
</context-param>
<!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>CFMA-SpringProject</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/webmvc-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
現在你開始寫你的測試,爲您的應用程序的業務邏輯,而無需加載所有的網頁內容。但在大多數情況下,這不是明智之舉。例如,當您使用MySql等持久數據庫運行普通應用程序(,請不要責怪我對該句子),或者您希望在生產中使用jndi配置數據庫時,您想使用Inmemory數據庫運行一些快速測試和一個用於測試的「正常」配置。所以你需要的是兩種不同的配置。寫作時的每一件事情的兩倍,最簡單的方法是將兩個applicationContext.xml
文件分割:
applicationContext.xml
爲核心的東西,而分貝的東西,不同的測試applicationContext-db.xml
對生產數據庫配置(例如JNDI的查找的DB連接和LocalContainerEntityManagerFactoryBean用於MySQL的)
(現在你明白的contextConfigLocation
模式在web.xml)
對於測試,您現在需要兩個文件(可以將它寫入一個文件,但我更喜歡兩個文件)。 * testContext-h2DbConfig.xml
該文件是applicationContext-db.xml
的測試兄弟,但是包含測試數據庫且沒有jndi。 * textContext.xml
此文件位於您測試用例中的@ContextConfiguration
引用的文件中。該文件僅包含您需要進行測試的配置的導入。在這種情況下,它是:
<import resource="classpath:/META-INF/spring/applicationContext.xml" />
<import resource="classpath:/META-INF/spring/testContext-h2DbConfig.xml" />
因爲我用的春天,這兩個文件都位於/src/test/resources/META-INF/spring/testContext.xml
如果你有你的春天配置,其他方面,其中,測試和生產配置不同(例如調度),那麼你可以用同樣的方法分割它。
我希望你明白分裂,命名約定和位置是如何協同工作的。
- 1. 配置Spring Cloud配置
- 2. spring bean配置
- 3. Spring templateResolver配置
- 4. LightAdmin Spring配置
- 5. Spring ReloadableResourceBundleMessageSource配置
- 6. Thymeleaf Spring配置
- 7. Spring + Hibernate + Spring Security配置
- 8. Spring bean配置xml
- 9. Spring-Boot Tomcat配置
- 10. 配置Spring的MappingJacksonHttpMessageConverter
- 11. Spring JdbcTemplate ConnectionPooling配置
- 12. Java Spring ApplicationContext配置
- 13. Spring + Flex + BlazeDs配置
- 14. Spring和Hibernate配置
- 15. 的Spring Java配置
- 16. Spring Security - Java配置
- 17. Spring @ConfigurationProperties根配置
- 18. 的Spring Java配置
- 19. Spring AOP配置(XML)
- 20. Spring @Transactional配置xml
- 21. Spring MVC LightAdmin配置
- 22. spring servlet.xml的配置
- 23. Tomcat/Spring SSL配置
- 24. Spring Security XML配置
- 25. Spring XML配置與XML配置
- 26. Spring YAML配置文件配置
- 27. 使用Spring 3.1的Java配置配置spring-data-mongodb存儲庫
- 28. 如何使用xml配置配置sockjs配置Spring 4 WebSocket
- 29. 如何讓Spring Boot根據外部配置配置RabbitMQ配置?
- 30. Spring-data-redis:cacheManager配置問題
你是否在像Tomcat這樣的東西里面使用Spring,或者你在創建一個獨立的應用程序?你的應用程序如何啓動? – Darien 2011-06-08 19:00:03
這些教程在學習spring時很有用http://krams915.blogspot.com/p/tutorials.html – NimChimpsky 2011-07-28 08:51:24