spring - 配置文件未从 tomcat 中设置的环境变量中选取,但在 web.xml 中提及时选取

标签 spring tomcat web.xml profiles

我已经创建了一个配置文件的环境变量条目,以便在我的 Web 应用程序中激活: 在 Tomcat 服务器的 setenv.bat 文件中 JAVA_OPTS=%JAVA_OPTS% -Dspring.profiles.active=prod

当我的应用程序尝试使用事件配置文件加载数据源时,它给出异常,因为没有设置事件配置文件。

applicationcontext.xml 中的条目:

 <beans profile="dev">
  <bean id="myDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
        <property name="driverClassName"  value="oracle.jdbc.driver.OracleDriver"></property>  
        <property name="url" value="jdbc:oracle:thin:@localhost:1521:books"></property>  
        <property name="username" value="system"></property>  
        <property name="password" value="xyz"></property>  
    </bean>  
    </beans>

    <beans profile="prod">
  <bean id="myDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
        <property name="driverClassName"  value="oracle.jdbc.driver.OracleDriver"></property>  
        <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"></property>  
        <property name="username" value="system"></property>  
        <property name="password" value="abc"></property>  
    </bean>  
    </beans>

</beans>

然而,当我通过 web.xml 条目做同样的事情时,它起作用了:

 <context-param>
    <param-name>spring.profiles.active</param-name>
    <param-value>dev</param-value>
    </context-param>

谁能告诉我使用环境变量加载配置文件有什么问题。

最佳答案

因为该命令行选项为 Tomcat 本身定义了一个系统属性,它不会被运行的 Web 上下文自动获取。

东西 like this可能会工作:

<context-param>
  <param-name>spring.profiles.active</param-name>
  <param-value>${spring.profiles.active}</param-value>
</context-param>

或者,根据您要对部署进行的更改类型,您可能需要查看 Spring Boot,它可以简化配置和启动单个 Spring 应用程序。

关于spring - 配置文件未从 tomcat 中设置的环境变量中选取,但在 web.xml 中提及时选取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40723818/

相关文章:

debugging - 如何知道 Spring 生成的 bean 中的 bug 所在行?

linux - Tomcat 未启动 : Permission denied

java - 如何使用 servlet 的 web.xml 查找最后登录 Web 应用程序的用户

spring - postman 中不支持的媒体类型

java - RelationshipEntity 未保留

java - 在 Spring MVC 中,如何存储用户输入并稍后重现它?

java - 如何在 Server.xml 中添加两个或多个资源

java - Tomcat 7 无法部署 war - 无法解析配置类

java - 如何为未配置 web.xml 的 Web 应用程序指定显示名称

weblogic - 从哪里开始使用 Weblogic 和 j_security_check?