gpt4 book ai didi

spring - 如何控制在测试环境和生产环境之间变化的 Spring 注入(inject)?

转载 作者:行者123 更新时间:2023-12-01 01:14:06 27 4
gpt4 key购买 nike

我正在设置一个 CI 情况,我将在其中将我的 Web 应用程序部署到测试环境。在这个测试环境中,我希望应用程序使用的业务对象是真实对象的模拟;模拟将返回静态测试数据。我正在使用它对我的 ui 运行测试。我正在使用 Spring 控制这些业务对象依赖项的注入(inject);这是一个 struts 2 应用程序,值得。

我认为我的问题与 Maven 相关。让我的 Maven 构建确定是否构建 Spring 配置以注入(inject)模拟或注入(inject)真实事物的最佳方法是什么?这对 Maven 配置文件有用吗?其他选择?

最佳答案

Spring 本身支持 profiles (如果您使用的是 3.1 或更新版本),对于 Web 应用程序,您可以使用 context-parameter 在 中为不同环境设置事件配置文件。 web.xml :

<context-param>
<param-name>spring.profiles.default</param-name>
<param-value>test</param-value>
</context-param>

编辑:对于 Maven 和 Jenkins,您应该能够为构建作业设置参数,如下所示:

首先,让 Maven 过滤您的 xml-resources(在此示例中,仅过滤以 xml 结尾的文件,其他文件不过滤)通过将以下内容添加到您的 pom.xml 里面 <build> </build> -标签:
    <resources>
<resource>
<directory>src/main/webapp</directory>
<filtering>true</filtering>
<includes>
<include>**/*xml</include>
</includes>
</resource>
<resource>
<directory>src/main/webapp</directory>
<filtering>false</filtering>
<excludes>
<exclude>**/*xml</exclude>
</excludes>
</resource>
</resources>

然后,参数化你的 中的上下文参数。 web.xml :
<context-param>
<param-name>spring.profiles.default</param-name>
<param-value>${env.SPRINGPROFILE}</param-value>
</context-param>

然后在 Jenkins 中参数化构建作业,为 SPRINGPROFILE 设置所需的字符串参数(例如 test 或 prod): https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Build

关于spring - 如何控制在测试环境和生产环境之间变化的 Spring 注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13093346/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com