Spring configuration file dynamically read properties
need:
In the configuration file
=${env}
Dynamic binding when packaged.
plan
1. Configure Enable Placeholder Replacement in File
<profiles> <!-- Local development --> <profile> <id>dev</id> <properties> <env>dev</env> </properties> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <!-- Other environments --> </profiles> <build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </build>
- Maven
<filtering>
The default value isfalse
。 - This means that when copying the resource file, Maven does not placeholder replacement (i.e. filter).
2. Configure in the configuration file=@env@
or=${env}
3. Select the environment when packagingmvn clean package -Pprod
- -P parameter is used to activate a specific configuration file (profile) in a Maven build
Custom placeholders
If you are worried about conflicts, you can customize the placeholder.
<build> <plugins> <plugin> <groupId></groupId> <artifactId>maven-resources-plugin</artifactId> <version>3.2.0</version> <configuration> <delimiters> <delimiter>#{</delimiter> <delimiter>}</delimiter> </delimiters> <useDefaultDelimiters>false</useDefaultDelimiters> </configuration> </plugin> </plugins> </build>
Summarize
The above is personal experience. I hope you can give you a reference and I hope you can support me more.