Java 在tomcat应用程序部署期间获取主机名
我的任务是在Spring数据库配置中使用主机名 例如,当在localhost db上部署应用程序时,请求在localhost:5432/数据库上发送,或者在(例如)172.18.0.2:5432/数据库上发送 我正试图使用Spring SpEL实现此目的:Java 在tomcat应用程序部署期间获取主机名,java,spring,tomcat,environment-variables,hostname,Java,Spring,Tomcat,Environment Variables,Hostname,我的任务是在Spring数据库配置中使用主机名 例如,当在localhost db上部署应用程序时,请求在localhost:5432/数据库上发送,或者在(例如)172.18.0.2:5432/数据库上发送 我正试图使用Spring SpEL实现此目的: <bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource" p:driverClassName="org.postgresql.Dr
<bean id="dataSource"
class="org.apache.tomcat.jdbc.pool.DataSource"
p:driverClassName="org.postgresql.Driver"
p:url="#{'jdbc:postgresql://' + @bUrl.getHost=='localhost'?'localhost':'172.18.0.2' + ':5432/infostock'}"
/>
在这个表达式中,我需要识别bUrl。它必须包含有关主机名的信息
但我如何才能获得这些信息:
<bean class="java.net.URI" id="bUrl">
<constructor-arg value="${???????}"/>
</bean>
是否存在特殊变量
我试图从HttpServletRequest获取主机名,但问题是应用程序在部署阶段后能够填充请求。要求动态获取主机名或从属性文件读取?动态-取决于主机名(localhost或其他),我不知道如何动态执行。另一种方法是定义与两个概要文件(比如dev和prod)关联的两个
数据源
bean,并使用命令行参数(例如,-Dspring.profiles.active=“dev”
)