本地Debug规范

背景

虽然通过单元测试可以解决一部分问题,但是单元测试主要是针对关键业务逻辑做测试,不可做到100%覆盖。
本地启动程序测试是非常有必要的,在常见的Springcloud架构,通过postman测试,很方便。

问题

  • 本地Debug,本地服务会注册到开发注册中心,如何减少对别人的影响?
  • 只访问本地的application配置文件
  • 只访问本地的log4j2.xml配置文件

1. 加载本地的springboot 应用文件

在 Spring Boot 项目中,active profiles 参数可用于激活不同的配置文件,以满足不同环境(如开发、测试、生产)的需求。在本地进行 Debug 时,你可以利用这个特性加载特定的配置。以下是详细步骤和操作方法:
创建 application-dev.yml:开发环境配置文件,用于本地 Debug。
IntelliJ IDEA
打开要调试的主类(通常是带有 @SpringBootApplication 注解的类)。
点击主类旁边的运行 / 调试按钮,选择 Edit Configurations。
在 VM options 字段中添加 -Dspring.profiles.active=dev,表示激活 dev 配置文件。

测试配置是否生效的方法

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.core.env.Environment;

@SpringBootApplication
public class YourApplication implements CommandLineRunner {

    @Autowired
    private Environment environment;

    public static void main(String[] args) {
        SpringApplication.run(YourApplication.class, args);
    }

    @Override
    public void run(String... args) throws Exception {
        String[] activeProfiles = environment.getActiveProfiles();
        if (activeProfiles.length > 0) {
            System.out.println("Active profiles: " + String.join(", ", activeProfiles));
        } else {
            System.out.println("No active profiles.");
        }
    }
}

注意事项
application-dev.yml 而不是 application_dev.yml

2. VM options 禁止本地应用注册到注册中心

nacos
spring.cloud.nacos.discovery.enabled=false
consul
spring.cloud.consul.discovery.enabled=false
register.route.enable=false

3. 使用本地的log4j2的配置文件

在application-dev.yml 增加

logging:
  config: classpath:log4j2_dev.xml # 指定 Log4j2 配置文件路径

3. 在本地调整配置中心优先级,或者禁用配置中心

本地应用启动的时候会优先获取配置中心的配置

使用 Nacos 作为配置中心
Nacos 是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。在 Spring Boot 项目中使用 Nacos 作为配置中心时,本地配置和 Nacos 配置中心的优先级规则如下:
默认情况下,Nacos 配置中心的配置优先级高于本地配置。这意味着如果在 Nacos 配置中心和本地配置文件中都对同一个属性进行了配置,那么应用会优先使用 Nacos 配置中心中的配置值。

调整优先级
若你希望本地配置的优先级更高,可以通过设置

spring.cloud.nacos.config.allow-override=true
spring.cloud.nacos.config.override-none=true
spring.cloud.nacos.config.override-system-properties=false

参考资料

posted @   向着朝阳  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示