Java 配置Heroku应用程序本地版本的数据库访问
我正在修改“用Java开始Heroku”示例应用程序(/),并且在本地数据库连接方面遇到问题 相关代码来自主类:Java 配置Heroku应用程序本地版本的数据库访问,java,postgresql,heroku,Java,Postgresql,Heroku,我正在修改“用Java开始Heroku”示例应用程序(/),并且在本地数据库连接方面遇到问题 相关代码来自主类: public class Main { @Value("${spring.datasource.url}") private String dbUrl; [...] @Bean public DataSource dataSource() throws SQLException { if (dbUrl == null || dbUr
public class Main {
@Value("${spring.datasource.url}")
private String dbUrl;
[...]
@Bean
public DataSource dataSource() throws SQLException {
if (dbUrl == null || dbUrl.isEmpty()) {
return new HikariDataSource();
} else {
HikariConfig config = new HikariConfig();
config.setJdbcUrl(dbUrl);
return new HikariDataSource(config);
}
}
dbUrl
的值由Spring从application.properties
文件中提取,该文件包含
spring.datasource.url: ${JDBC_DATABASE_URL:}
spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.maximum-pool-size=10
[...]
因此,属性文件只是引用另一个变量,${JDBC\u DATABASE\u URL:}
。根据,${JDBC\u DATABASE\u URL:}
是在运行时生成的。在部署的版本上,应用程序可以很好地计算出“真实”的DB URL,但是当我发现Hikari错误时
dataSource或dataSourceClassName或jdbcUrl是必需的
当试图访问数据库,甚至只是从连接池获取连接时
我已经
- 已将最新版本的Postgres下载到我的本地计算机
- 已验证它正在按预期使用端口5432
- 使用
set DATABASE\u URL在命令行上设置DATABASE\u URL环境变量=postgres://my_db_user:somePassword@localhost:5432/my\u local\u db\u name
要让应用程序在本地运行,我还需要进行哪些配置?或者更具体地说,如何使应用程序的本地版本具有正确的
数据库URL/JDBC\u数据库URL
值?不要在本地设置数据库URL
,而是像这样设置JDBC\u数据库URL
:
JDBC_DATABASE_URL=jdbc:postgresql://localhost:5432/my_local_db_name?user=my_db_user&password=somePassword
如果您使用的是
heroku local
什么是您的操作系统?@clarity123 Win10不会因为硬编码而阻止应用程序在部署到生产环境时获取正确的值?不,根据文档,.env文件允许您捕获本地运行应用程序所需的所有配置变量代码>他们描述它的方式听起来像是专门为本地使用而构建的。即使在您链接的github上,它也会显示确保您有一个本地.env文件
,因此即使在这里,它也被视为本地事务.env
不是远程使用的(在heroku上),甚至应该添加到您的.gitignore
.env。。。应仅用于本地配置。更新.gitignore文件以排除.env文件。
@codefinger因首先考虑.env
而获得好评。如果您喜欢我的文档,您可以对特定评论进行升级,谢谢:)