SoFunction
Updated on 2025-03-03

How to configure properties in Spring for dynamic reading of files

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.