gpt4 book ai didi

spring - 环境变量——Spring、Tomcat

转载 作者:行者123 更新时间:2023-11-28 21:59:39 24 4
gpt4 key购买 nike

我无法使用环境属性设置数据库连接。

应用程序使用 Spring 构建并在 Tomcat 容器 (7.0.52) 中运行。

XML 文件设置:

    <bean id="dataSource"
class="com.mchange.v2.c3p0.ComboPooledDataSource"
p:driverClass="com.mysql.jdbc.Driver"
p:jdbcUrl="jdbc:mysql://${CONF_MYSQL_HOST}:${CONF_MYSQL_PORT}/${CONF_MYSQL_DATABASE}"
p:user="${CONF_MYSQL_LOGIN}"
p:password="#${CONF_MYSQL_PASSWORD}"
p:minPoolSize="6"
p:maxPoolSize="18" />

<context:property-placeholder properties-ref="casProperties"
system-properties-mode="FALLBACK"/>

当我运行时

echo $CONF_MYSQL_HOST

变量值被正确打印。

我还尝试通过放置在 CATALINA_HOME/bin/' 中的 setenv.sh 传递值:

export CONF_MYSQL_HOST=$CONF_MYSQL_HOST
export CONF_MYSQL_PORT=$CONF_MYSQL_PORT
export CONF_MYSQL_DATABASE=$CONF_MYSQL_DATABASE
export CONF_MYSQL_LOGIN=$CONF_MYSQL_LOGIN
export CONF_MYSQL_PASSWORD=$CONF_MYSQL_PASSWORD

但什么都没有改变。

在日志文件中我只看到:

jdbcUrl -> jdbc:mysql://:/

最佳答案

我建议像这样做 JavaConfig:

@Configuration
public class DatabaseConfig {

private Environment env;

@Autowired
public DatabaseConfig(Environment env) {
this.env = env;
}

@Bean
public DataSource dataSource() {
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setDriverClass("com.mysql.jdbc.Driver");
String jdbcUrl = String.format("jdbc:mysql://%s:%s/%s", env.getProperty("CONF_MYSQL_HOST"),
env.getProperty("CONF_MYSQL_PORT"), env.getProperty("CONF_MYSQL_DATABASE"));
dataSource.setJdbcUrl(jdbcUrl);
dataSource.setUser(env.getProperty("CONF_MYSQL_LOGIN"));
dataSource.setPassword(env.getProperty("CONF_MYSQL_PASSWORD"));
dataSource.setMinPoolSize(6);
dataSource.setMaxPoolSize(18);

return dataSource;
}
}

希望这对您有所帮助!

关于spring - 环境变量——Spring、Tomcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40871666/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com