我已经创建了一个配置文件的环境变量条目,以便在我的 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/