一直只會使用,但不知道怎么配置的。所以自己配配看。
本小白啟初的想法是-------在 application.properties里指定需要加載的配置文件和自定義屬性,就可以啦。
於是做了如下操作:
先建立兩個配置文件,分別命名為 application-dev.properties 和 application-prod.properties。
並且在配置文件中,分別自定義屬性
profile.name = dev
profile.name = prod
在application.properties中不明所以、依葫蘆畫瓢、異想天開的直接寫上了自以為的指定需要加載的配置文件和屬性(純小白,純純的小白。哎。鄙視自己)。
spring.profiles.active=${spring.profiles.active}
profile.name = ${profile.name}
然后再依葫蘆畫瓢的在pom.xml里配置
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<env>dev</env>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<env>prod</env>
</properties>
</profile>
</profiles>
到了這里,突然覺得有哪里不對。-----------項目怎么知道去哪里找文件的替換源???起碼有個文件名格式對不對??
還需要指定替換源呀!
於是,百度一下,需要在build里面指定filiter
<filters> <filter>src/main/resources/application-${env}.properties</filter> </filters>
然后啟動項目,還是不行。最后查下來,因為------------默認占位符是@...@! 呵呵。再一次嘲笑依葫蘆畫瓢的自己!如果寫@..@確實也沒毛病,但是我看大佬們的項目好像都寫的${...},雖然不知道為什么,但是大佬們一定有大佬們這么寫的原因,那我還是暫且學習大佬們吧。(小白的自我修養)
所以還需要再build里面配置
<resources>
<resource>
<filtering>true</filtering>
<!-- 這個表示對src/main/resources中的配置文件中的占位符進行動態替換 -->
<directory>src/main/resources</directory>
</resource>
</resources>
build-plugin下配置
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <configuration> <delimiters> <delimiter>${*}</delimiter> <!-- 使用${..}作為占位符 --> </delimiters> <useDefaultDelimiters>true</useDefaultDelimiters> <!-- 使用默認的占位符(@..@) --> </configuration>
</plugin>
(其中還有個小插曲,從網上copy下來,咋還報錯嗯?因為copy的里面看似正常。。但其實有特殊字符了。。。。把前面虛偽的空格刪掉!就可以了!)
最終,項目啟動成功,讀取自定義變量成功~~~~。
-----------------------------------------------------------------------------------------------------------------------------------------------------
回過頭來,敲黑板總結一下,其實配置順序應該是:
- 前期准備:
1.配置pom.xml,允許用${...}作為占位符;
2.配置對哪些目錄下,配置文件的占位符進行動態替換;
- profile配置:
1.定義profile文件(創建文件,pom.xml定義)
2.定義filter(當filter被激活時,Maven會掃描資源,找到有占位符${...}的Maven屬性的引用,然后用對應的值替換。)