使用Oracle AI数据库实现Spring Cloud Config的JDBC后端配置
DockerJDBC后端Oracle数据库Spring Cloud Config微服务配置
原文地址: https://andersswanson.dev/2025/11/21/spring-cloud-config-jdbc-backend-oracle-ai-database/
# 使用 Oracle AI 数据库实现 Spring Cloud Config JDBC 后端

Spring Cloud Config 的 JDBC 后端将应用程序属性存储在数据库中,为所有 Spring Boot 应用提供配置属性的简单方法。
```
Client → Config Server → Oracle DB
```
## 准备工作
- Java 21+
- Maven
- 兼容 Docker 的环境
## 克隆项目代码
克隆示例项目:[GitHub 仓库](https://github.com/anders-swanson/oracle-database-code-samples/tree/main/spring-cloud-config)
项目包含 Spring Cloud Config 的客户端/服务器模块,以及一个用于设置 Oracle AI 数据库服务器的 docker-compose 脚本。
## 目录结构
- `client/`:从服务器获取配置的 Spring Boot 客户端应用
- `server/`:带有 JDBC 后端的 Spring Cloud Config 服务器应用
- `oracle/`:数据库初始化脚本
- `docker-compose.yml`:启动 Oracle 数据库实例的 Docker Compose 文件
- `crud-properties.md`:关于使用 CRUD API 管理属性的附加文档
## 启动数据库容器
使用 Oracle AI Database Free 容器作为 Spring Cloud Config 的 JDBC 后端:
```bash
docker-compose up -d
```
## 运行客户端/服务器示例
### 启动 Spring Cloud Config 服务器
进入 `server` 目录并启动服务器:
```bash
mvn clean compile spring-boot:run
```
### 插入配置属性
使用 SQL 或 CRUD API 将属性添加到 `PROPERTIES` 表:
```bash
curl -X POST http://localhost:8888/api/properties \
-H "Content-Type: application/json" \
-d '{
"application": "myapp",
"profile": "dev",
"label": "latest",
"propKey": "config.key",
"value": "config-value"
}'
```
### 启动客户端应用
进入 `client` 目录并启动客户端:
```bash
mvn clean compile spring-boot:run
```
### 验证配置属性
访问客户端应用:
```bash
curl http://localhost:8080/value
```
## 可选:深入配置服务器
### 依赖项
配置服务器需要以下依赖项:
```xml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
```
### 应用属性
配置服务器属性文件示例:
```yaml
spring:
cloud:
config:
server:
jdbc:
enabled: true
sql: SELECT PROP_KEY, VALUE from PROPERTIES where APPLICATION=? and PROFILE=? and LABEL=?
datasource:
username: testuser
password: testpwd
url: jdbc:oracle:thin:@localhost:1527/freepdb1
```
### 属性表结构
用于存储配置属性的表结构:
```sql
create table PROPERTIES (
id number generated always as identity primary key,
application varchar2(255),
profile varchar2(255),
label varchar2(255),
prop_key varchar2(255),
value varchar2(255)
);
```
### @EnableConfigServer 注解
启用 Spring Cloud Config 服务器:
```java
@SpringBootApplication
@EnableConfigServer
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
```
## 总结
Spring Cloud Config 的 JDBC 后端提供了一种简单可靠的方法,将应用配置集中存储在 Oracle 数据库中。