原文地址: https://andersswanson.dev/2025/11/21/spring-cloud-config-jdbc-backend-oracle-ai-database/ # 使用 Oracle AI 数据库实现 Spring Cloud Config JDBC 后端 ![](https://andersswanson.dev/wp-content/uploads/2025/11/Screenshot-2025-11-20-at-2.47.47-PM.png) 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 数据库中。