javascript
Spring 3.1配置文件和Tomcat配置
通過定義系統屬性spring.profiles.active, Spring允許我們使用XML配置或@Profile注釋根據活動的概要文件名稱創建不同的bean。 眾所周知,系統屬性可以在Spring XML文件中使用,我們將利用這一點。
在這篇文章中,我將展示如何使用Spring配置文件為所有環境創建一個包,以及如何在Apache Tomcat上運行它。
示例架構
我認為最常見和想要的體系結構是,在開發,測試和生產上部署的應用程序僅在包含配置的已使用屬性文件中有所不同時。 WAR包含所有環境的配置,并且在運行時選擇了正確的環境。 因此,如果在應用程序資源中包含以下文件,則是最好的:
srcmainresources- config_dev.properties- config_production.properties...配置Spring屬性占位符
為了在Spring中加載屬性文件,我們使用<context:property-placeholder />或@PropertySource批注。 在我的示例中,我將遵循XML配置方法來加載屬性文件:
<?xml version='1.0' encoding='UTF-8'?> <beans xmlns='http://www.springframework.org/schema/beans'xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'xmlns:context='http://www.springframework.org/schema/context'xsi:schemaLocation='http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.1.xsd'><context:property-placeholder location='classpath:config_${spring.profiles.active}.properties' /></beans>配置Tomcat
現在是時候告訴Tomcat哪個配置文件處于活動狀態了。 至少有辦法做到這一點:
- 在web.xml中定義上下文參數 –破壞了“針對所有環境的一個包”的聲明。 我不建議那樣
- 定義系統屬性-Dspring.profiles.active =您的活動配置文件
我認為定義系統屬性是更好的方法。 那么如何為Tomcat定義系統屬性呢? 在Internet上,我可以找到很多建議,例如“ modify catalina.sh”,因為您找不到用于執行此類操作的任何配置文件。 修改catalina.sh是一個骯臟的無法維護的解決方案。 有更好的方法可以做到這一點。
只需在Tomcat的bin目錄中創建包含以下內容的文件setenv.sh :
JAVA_OPTS='$JAVA_OPTS -Dspring.profiles.active=dev' 并且它將在運行catalina.sh啟動或運行期間自動加載。
結論
使用Spring概要文件,我們可以創建可以在多個環境中部署的靈活應用程序。 與Maven配置文件方法有何不同? 使用Maven,構建應用程序的人必須定義應該在哪個環境中運行。 通過上述方法,環境決定了其開發,測試還是生產。 因此,我們可以使用完全相同的WAR文件并將其部署到任何地方。
參考: Software Development Journey博客上的JCG合作伙伴 Maciej Walkowiak提供的Spring 3.1配置文件和Tomcat配置 。
翻譯自: https://www.javacodegeeks.com/2012/06/spring-31-profiles-and-tomcat.html
總結
以上是生活随笔為你收集整理的Spring 3.1配置文件和Tomcat配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 腾讯云ddos攻击ip(腾讯云ddos攻
- 下一篇: 在Spring中使用Redis