Java 条件配置 (web.xml) - Development/Production
Java Conditional configuration (web.xml) - Development/Production
我在 Spring 应用程序的 web.xml
文件中有以下配置:
<session-config>
<cookie-config>
<name>mycookie</name>
<http-only>true</http-only>
<secure>true</secure>
</cookie-config>
</session-config>
问题是:<secure>true</secure>
强制 cookie 仅通过 HTTPS 发送,而在我的开发机器中我没有设置 HTTPS。但是这个配置在生产环境中是必不可少的。
有没有办法使此配置对环境敏感 - 即 false
用于开发,true
用于 official/production 构建?
如果您正在使用 Maven(我强烈建议您这样做),那么您可以将配置文件与 maven-war-plugin 一起使用。您可以在这些配置文件中的每一个中指定不同的 web.xml
(这样您就可以有一个用于生产环境,另一个用于开发环境)。这是给你的例子
<properties>
<webXmlPath>path/to/your/dev/xml</webXmlPath>
</properties>
<profiles>
<profile>
<id>prod</id>
<properties>
<webXmlPath>path/to/prod/webXml</webXmlPath>
</properties>
</profile>
</profiles>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>${war-plugin.version}</version>
<configuration>
<webXml>${webXmlPath}</webXml>
</configuration>
</plugin>
</plugins>
</build>
现在每个构建都将默认 web.xml
开发设置。当你想将其更改为生产构建时,只需执行
mvn clean install -Pprod
解决方案非常简单,使用一个属性:
<secure>${session.cookie.secure}</secure>
在我的开发.properties
文件中我添加了:
session.cookie.secure=false
而在 test/production 中我可以将其设置为 true
我在 Spring 应用程序的 web.xml
文件中有以下配置:
<session-config>
<cookie-config>
<name>mycookie</name>
<http-only>true</http-only>
<secure>true</secure>
</cookie-config>
</session-config>
问题是:<secure>true</secure>
强制 cookie 仅通过 HTTPS 发送,而在我的开发机器中我没有设置 HTTPS。但是这个配置在生产环境中是必不可少的。
有没有办法使此配置对环境敏感 - 即 false
用于开发,true
用于 official/production 构建?
如果您正在使用 Maven(我强烈建议您这样做),那么您可以将配置文件与 maven-war-plugin 一起使用。您可以在这些配置文件中的每一个中指定不同的 web.xml
(这样您就可以有一个用于生产环境,另一个用于开发环境)。这是给你的例子
<properties>
<webXmlPath>path/to/your/dev/xml</webXmlPath>
</properties>
<profiles>
<profile>
<id>prod</id>
<properties>
<webXmlPath>path/to/prod/webXml</webXmlPath>
</properties>
</profile>
</profiles>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>${war-plugin.version}</version>
<configuration>
<webXml>${webXmlPath}</webXml>
</configuration>
</plugin>
</plugins>
</build>
现在每个构建都将默认 web.xml
开发设置。当你想将其更改为生产构建时,只需执行
mvn clean install -Pprod
解决方案非常简单,使用一个属性:
<secure>${session.cookie.secure}</secure>
在我的开发.properties
文件中我添加了:
session.cookie.secure=false
而在 test/production 中我可以将其设置为 true