java - 连接字符串中的 Spring Profiles
问题描述
我正在使用Spring Boot和Docker。我正在使用connectionService.java
它返回连接来执行某些任务。此连接字符串具有jdbc:mysql://localhost/databaseName?autoReconnect=true&useSSL=false
. 如果我正在运行应用程序,则它运行良好,但如果我构建 docker 映像,则此连接字符串应替换为jdbc:mysql://docker-mysql/databaseName?autoReconnect=true&useSSL=false
. 因为 docker-image 的配置是docker-mysql而不是localhost 。
连接服务.java
@Service
public class ConnectionService {
public Connection createConnection() throws SQLException {
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/databaseName?autoReconnect=true&useSSL=false", "root", "root");
return connection;
}
}
码头工人组成
version: '3'
services:
docker-mysql:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=databaseName
- MYSQL_USER=root
- MYSQL_PASSWORD=root
ports:
- 3307:3306
app:
image: app:latest
ports:
- 8080:8080
depends_on:
- docker-mysql
environment:
- SPRING_DATASOURCE_URL=jdbc:mysql://docker-mysql/databaseName?autoReconnect=true&useSSL=false
- SPRING_DATASOURCE_USERNAME=root
- SPRING_DATASOURCE_PASSWORD=root
错误:此刻。我正面临错误Communication Link failure。我怎么能做到这一点,相同的代码适用于运行应用程序以及构建 docker 映像时。
解决方案
您在 Docker-compose 中设置 SPRING_DATASOURCE_URL 环境变量,但不要在 ConnectionService 中使用它。
也许,您可以使用 Spring 中的 System.getEnv() 或 @Value 注释。
修改您的 ConnectionService 类:
@Value("${spring.datasource.url}")
private String datasourceUrl;
Connection connection = DriverManager.getConnection(datasourceUrl, "root", "root");
推荐阅读
- powershell - Powershell:尽管我的路径很短,但 Get-ChildItem 抛出“路径太长”错误
- android - Android - 绑定适配器无法加载文本
- asp.net-core - 带有标签助手 asp.net core 3.1 的表单验证不显示为红色
- java - Autosize = uniform 只缩小文本以适应,不增加大小
- android - Activity 覆盖状态栏
- python - python3中pygame的显示问题
- javascript - 如何使用值引用数组内部的对象并在 v-model 中使用它
- python - 在熊猫中使用 groupby 和 duplicate
- python - 如何取消列出数据框列中的列表?
- python - 当我使用 pip install proxybroker 命令时,出现“退出状态为 1 的命令出错”