10.4基础配置管理

分类: Nacos配置中心

基础配置管理

基础配置管理是使用 Nacos 配置中心的第一步。本节将学习如何进行基础配置管理。

本节将学习:添加配置、读取配置、@Value 注解,以及 @ConfigurationProperties。

在商城项目中集成 Nacos 配置中心

步骤1:添加 Nacos Config 依赖

文件路径: mall-microservices/user-service/pom.xml

<dependencies> 中添加:

<!-- Nacos 配置中心 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>

注意:需要同时保留 Nacos Discovery 依赖,因为配置中心和服务发现可以同时使用。

步骤2:创建 bootstrap.yml 配置文件

文件路径: mall-microservices/user-service/src/main/resources/bootstrap.yml

spring: application: name: user-service cloud: nacos: config: server-addr: localhost:8848 namespace: public group: DEFAULT_GROUP file-extension: yaml # 共享配置(可选) shared-configs: - data-id: common-config.yaml group: SHARED_GROUP refresh: true discovery: server-addr: localhost:8848 namespace: public group: DEFAULT_GROUP

bootstrap.yml 说明:

  • bootstrap.ymlapplication.yml 之前加载
  • 用于配置 Nacos 连接信息
  • 确保在应用启动前就能连接到 Nacos

步骤3:在 Nacos 控制台添加配置

在 Nacos 控制台添加配置:

  1. 访问 Nacos 控制台:http://localhost:8848/nacos
  2. 进入"配置管理" -> "配置列表"
  3. 点击"+"按钮,创建新配置

配置信息:

  • Data IDuser-service.yaml(格式:${spring.application.name}.${file-extension}
  • GroupDEFAULT_GROUP
  • 配置格式:YAML
  • 配置内容
# 数据库配置 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/user_db?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai username: root password: root # MyBatis Plus 配置 mybatis-plus: configuration: map-underscore-to-camel-case: true log-impl: org.apache.ibatis.logging.stdout.StdOutImpl global-config: db-config: id-type: auto # 应用自定义配置 app: name: user-service version: 1.0.0 description: 用户服务

步骤4:更新 application.yml

文件路径: mall-microservices/user-service/src/main/resources/application.yml

server: port: 8081 # 注意:数据库等配置已迁移到 Nacos,这里只保留本地配置 # 如果需要本地覆盖,可以在这里配置 # Actuator 配置 management: endpoints: web: exposure: include: health,info,metrics endpoint: health: show-details: always

步骤5:使用 @Value 读取配置

文件路径: mall-microservices/user-service/src/main/java/com/mall/userservice/config/AppConfig.java

package com.mall.userservice.config; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; @Configuration public class AppConfig { @Value("${app.name}") private String appName; @Value("${app.version}") private String appVersion; @Value("${app.description}") private String appDescription; // getters public String getAppName() { return appName; } public String getAppVersion() { return appVersion; } public String getAppDescription() { return appDescription; } }

步骤6:使用 @ConfigurationProperties 读取配置

文件路径: mall-microservices/user-service/src/main/java/com/mall/userservice/config/AppProperties.java

package com.mall.userservice.config; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Component @ConfigurationProperties(prefix = "app") public class AppProperties { private String name; private String version; private String description; // getters and setters public String getName() { return name; } public void setName(String name) { this.name = name; } public String getVersion() { return version; } public void setVersion(String version) { this.version = version; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } }

步骤7:在代码中使用配置

文件路径: mall-microservices/user-service/src/main/java/com/mall/userservice/controller/InfoController.java

package com.mall.userservice.controller; import com.mall.userservice.config.AppProperties; import com.mall.userservice.common.Result; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.HashMap; import java.util.Map; @RestController @RequestMapping("/api/info") public class InfoController { @Value("${app.name}") private String appName; @Autowired private AppProperties appProperties; @GetMapping public Result<Map<String, Object>> getInfo() { Map<String, Object> info = new HashMap<>(); info.put("appName", appName); info.put("appNameFromProperties", appProperties.getName()); info.put("version", appProperties.getVersion()); info.put("description", appProperties.getDescription()); return Result.success(info); } }

配置迁移步骤

从 application.yml 迁移到 Nacos

迁移步骤:

  1. 识别需要迁移的配置

    • 数据库配置
    • Redis 配置
    • 第三方服务配置
    • 业务参数配置
  2. 在 Nacos 控制台创建配置

    • Data ID:${spring.application.name}.yaml
    • Group:DEFAULT_GROUP
    • 配置内容:从 application.yml 复制
  3. 更新 application.yml

    • 删除已迁移的配置
    • 保留本地特定配置(如端口号)
  4. 验证配置读取

    • 启动服务
    • 验证配置是否正确读取
    • 检查日志确认配置来源

商品服务配置迁移示例

在 Nacos 控制台创建配置:

  • Data IDproduct-service.yaml
  • GroupDEFAULT_GROUP
  • 配置内容
# 数据库配置 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/product_db?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai username: root password: root # 商品服务特定配置 product: default-page-size: 10 max-page-size: 100 cache-enabled: true cache-ttl: 3600

订单服务配置迁移示例

在 Nacos 控制台创建配置:

  • Data IDorder-service.yaml
  • GroupDEFAULT_GROUP
  • 配置内容
# 数据库配置 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/order_db?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai username: root password: root # 订单服务特定配置 order: order-no-prefix: ORD default-timeout: 30 max-retry-times: 3

@Value 注解

使用示例

@Value("${app.name}") private String appName; @Value("${app.version:1.0.0}") private String appVersion;

@ConfigurationProperties

使用示例

@ConfigurationProperties(prefix = "app") @Data public class AppConfig { private String name; private String version; private Integer port; }

官方资源

本节小结

在本节中,我们学习了:

第一个是添加配置。 在 Nacos 中添加配置。

第二个是读取配置。 从 Nacos 读取配置。

第三个是 @Value 注解。 使用 @Value 读取单个配置值。

第四个是 @ConfigurationProperties。 使用 @ConfigurationProperties 绑定配置对象。

这就是基础配置管理。掌握基础配置管理,是使用配置中心的基础。

在下一节,我们将学习动态配置刷新。