[英]Spring properties loading from properties file
我希望這不是重復的,但是我找不到答案:
我有一個帶bean.xml的Java Spring應用程序:
...
<bean id="config" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="locations">
<list>
<value>classpath:app.properties</value>
<value>classpath:app-dev-overrides.properties</value>
</list>
</property>
</bean>
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
<property name="properties" ref="config" />
</bean>
...
以及一個看起來像這樣的結構:
src/main/resources/
beans.xml
db-beans.xml
app.properties
app-dev-overrides.properties
wrapper.conf
src/main/shell
app.sh
custom-script.sh
src/main/wrapper
wrapper.so
wrapper
wrapper.jar
我使用帶有dist.xml的maven-assembly-plugin將其組裝為DIR,如下所示:
<id>dist</id>
<formats>
<format>dir</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
<scope>runtime</scope>
</dependencySet>
</dependencySets>
<fileSets>
<fileSet>
<!--Get the generated application jar-->
<directory>${project.build.directory}</directory>
<outputDirectory>./</outputDirectory>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
<fileSet>
<!--Get application prod resources (generally bean XMLs and properties files)-->
<directory>src/main/resources</directory>
<excludes>
<exclude>app-dev-overrides.properties</exclude>
</excludes>
<outputDirectory>conf</outputDirectory>
</fileSet>
<fileSet>
<directory>src/main/shell</directory>
<outputDirectory>./</outputDirectory>
<lineEnding>unix</lineEnding>
<directoryMode>0755</directoryMode>
</fileSet>
<fileSet>
<directory>src/main/wrapper</directory>
<outputDirectory>./bin/</outputDirectory>
<includes>
<include>libwrapper.so</include>
<include>wrapper</include>
</includes>
</fileSet>
與相關的pom:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<configuration>
<finalName>my-app-test</finalName>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>com.test.myapp.Main</mainClass>
<classpathPrefix>lib</classpathPrefix>
</manifest>
<manifestEntries>
<Class-Path>conf/</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.5.5</version>
<configuration>
<descriptors>
<descriptor>${project.basedir}/src/main/assembly/dist.xml</descriptor>
</descriptors>
<finalName>dist</finalName>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>directory</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
這樣做的目的是要得到結構:
dist/
bin/"Java Service Wrapper Stuff"
conf/"Properties and XML"
lib/"Libraries"
myApp.sh (java service wrapper shell)
myApp.jar (target built jar)
到目前為止,這對我來說還算不錯,除了屬性和XML文件似乎捆綁在JAR內並且更改重新啟動的conf / app.properties對生產服務器沒有影響之外,
那么,如何在啟動時加載配置而不是將其捆綁在JAR中來實現所需的dist結構?
您是否正在編寫用於執行JAR文件的腳本? 您可以在執行JAR文件時,通過從Classpath的conf文件夾中添加兩個文件來輕松實現此目的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.