spring - 不会从tomcat中设置的环境变量中获取配置文件,而是在web.xml中提及时进行配置

原文 标签 spring tomcat web.xml profiles

我创建了一个配置文件的环境变量条目以在我的Web应用程序中处于活动状态:
在Tomcat服务器的setenv.bat文件中
JAVA_OPTS =%JAVA_OPTS%-Dspring.profiles.active =产品

当我的应用程序尝试使用活动配置文件加载数据源时,由于未设置活动配置文件,因此会出现异常。

在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/

相关文章:

java - 在 web.xml 中引用环境变量

spring - 如何更改Spring Session(Redis)Cookie名称?

java - Spring ScheduledTasks不触发

java - 如何在Spring Boot中动态获取EntityGraph

java - 过滤器-忽略欢迎文件之外的其他请求

java - Spring MVC Web 应用程序 : application context starts twice

java - 序列化对象并将其作为字符串存储在Cookie中

java - 连接数超过池的最大大小时,我的Web应用程序已挂起

security - Apache Tomcat安全性:用户管理和日志文件管理

apache - Tomcat中出现 war 部署错误