Spring如何配置文件动态读取pom.xml中的属性

 更新时间:2024年10月24日 14:19:39   作者:知楠行易  
在项目开发中,经常需要将pom.xml中的属性动态传递给Spring配置文件,实现这一需求,可通过Maven的资源过滤功能,配置占位符替换,具体方法包括:在pom.xml中启用filtering,然后在Spring配置文件中通过${property}方式引用属性

Spring配置文件动态读取pom.xml属性

需求:

配置文件中的

spring.profiles.active=${env}

需要打包时动态绑定。

方案

1.在pom.xml文件中配置启用占位符替换

 <profiles>
        <!-- 本地开发 -->
        <profile>
            <id>dev</id>
            <properties>
                <env>dev</env>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <!-- 其他环境 -->
 </profiles>
 <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
</build>
  • Maven 中 <filtering> 的默认值是 false
  • 这意味着在复制资源文件时,Maven 不会对文件进行占位符替换(即过滤)。

2.在配置文件中配置 spring.profiles.active=@env@或者 spring.profiles.active=${env}

3.打包时选择环境 mvn clean package -Pprod

  • -P 参数用于激活 Maven 构建中的特定配置文件(profile)

自定义占位符

如果担心冲突,那么可以自定义占位符。

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</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>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java反射技术详解及实例解析

    Java反射技术详解及实例解析

    这篇文章主要介绍了Java反射技术详解及实例解析,反射可以说是Java中最强大的技术了,它可以做的事情太多太多,很多优秀的开源框架都是通过反射完成的。如果对JAVA感兴趣来可以学习一下
    2020-07-07
  • Java 线程池_动力节点Java学院整理

    Java 线程池_动力节点Java学院整理

    系统启动一个新线程的成本是比较高的,因为它涉及到与操作系统的交互。在这种情况下,使用线程池可以很好的提供性能,尤其是当程序中需要创建大量生存期很短暂的线程时,更应该考虑使用线程池
    2017-05-05
  • Spring @Bean注解的使用场景与案例实现

    Spring @Bean注解的使用场景与案例实现

    随着SpringBoot的流行,我们现在更多采用基于注解式的配置从而替换掉了基于XML的配置,所以本篇文章我们主要探讨基于注解的@Bean以及和其他注解的使用
    2023-03-03
  • nacos服务注册命名空间指定方式

    nacos服务注册命名空间指定方式

    文章介绍了Nacos服务注册命名空间的用途,以及如何创建和指定命名空间,命名空间用于隔离不同项目的服务和配置,避免冲突,通过在配置文件中指定命名空间ID,服务会注册到相应的命名空间中,这样可以更好地管理不同环境下的配置文件
    2024-12-12
  • SpringBoot实现token登录的示例代码

    SpringBoot实现token登录的示例代码

    在进行登录验证时,我们需要session或cookie会话进行验证,当我们脱离浏览器用app等向服务端发请求就没有session和cookie机制,这时我们就需要使用token令牌进行登录验证,本文就详细的介绍一下,感兴趣的可以了解一下
    2022-03-03
  • Java斗地主发牌课程设计

    Java斗地主发牌课程设计

    这篇文章主要为大家详细介绍了Java斗地主发牌课程设计,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-12-12
  • 连续调用多个外部系统写接口保证数据一致性的思路

    连续调用多个外部系统写接口保证数据一致性的思路

    今天小编就为大家分享一篇关于连续调用多个外部系统写接口保证数据一致性的思路,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • Java实现经典游戏飞机大战-I的示例代码

    Java实现经典游戏飞机大战-I的示例代码

    《飞机大战-I》是一款融合了街机、竞技等多种元素的经典射击手游。本文将利用java语言实现这游戏,文中采用了swing技术进行了界面化处理,感兴趣的可以了解一下
    2022-02-02
  • @MapperScan注解与@Mapper注解的使用

    @MapperScan注解与@Mapper注解的使用

    这篇文章主要介绍了@MapperScan注解与@Mapper注解的使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • java对象初始化顺序验证示例

    java对象初始化顺序验证示例

    以下这段小程序对调用对象构造函数时,父类构造函数、成员变量初始化函数,以及非静态初始化块调用顺序进行验证,不考虑静态成员及静态初始化块
    2014-02-02

最新评论