Spring Boot에서 템플릿 엔진으로 mustache를 사용할 때 key 값이 없으면 에러가 발생되는데 MustacheEnvironmentCollector로 default value 값을 설정할 수 있었다. @Bean public Mustache.Compiler mustacheCompiler( Mustache.TemplateLoader templateLoader, Environment environment) { MustacheEnvironmentCollector collector = new MustacheEnvironmentCollector(); collector.setEnvironment(environment); return Mustache.compiler() .defaultValue("Some D..
What? springdoc-openapi Swagger를 접속할 때 Fail to load remote configuration 에러 문구와 함께 swagger 접속 불가 Why? **/v3/api-docs/swagger-config 를 불러오지 못하는 문제 (404 Error) 로컬이나 서버 도메인으로 접속할 때는 정상 호출되지만 API Gateway를 통해 접속할 때 API path prefix가 변경될 때 이슈 비정상 호출 : http://apigw.com/v3/api-docs/swagger-config 정상 호출 : http://apigw.com/aa/v3/api-docs/swagger-config How? 아래 옵션을 .yml 에 추가해주면 해결된다. server: forward-headers..
@ControllerAdvice의 basePackages, annotations 속성으로 Controller 별로 Exception을 구분해서 처리할 수 있지만 URL Path 별로 구분하기는 어렵다. 아래처럼 동일 Exception을 구분해서 처리할 때는 @RequestMapping 으로 URL 을 구분할 수 있다. @ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(Exception.class) @RequestMapping("/api/**") // Specify the URL path pattern public ResponseEntity handleApiExceptions(HttpServletRequest request,..
이슈 spring boot 2.4 업그레이드 후 bootstrap.yml 에 설정해둔 spring.config 제대로 동작하지 않고 부팅 시 에러 발생 No spring.config.import property has been defined Action: Add a spring.config.import=configserver: property to your configuration. If configuration is not required add spring.config.import=optional:configserver: instead. To disable this check, set spring.cloud.config.enabled=false or spring.cloud.config.import-c..
이슈 Spring Boot 2.7.8 버전 업그레이드 시 mysql-connector-java 의존성 에러가 발생 원인 MySQL JDBC Driver가 mysql-connector-java -> com.mysql:mysql-connector-j 으로 변경됨 https://github.com/spring-projects/spring-boot/releases/tag/v2.7.8 조치 com.mysql:mysql-connector-j 으로 의존성 변경 #AS-IS implementation 'mysql:mysql-connector-java' #TO-BE implementation 'com.mysql:mysql-connector-j' https://mvnrepository.com/artifact/com.mys..
이슈 swagger-ui.html 접속은 https 로 접속했지만 swagger에서 API 호출 시 request 는 http로 하면서 CORS 이슈 발생 Failed to fetch. Possible Reasons: CORS Network Failure URL scheme must be "http" or "https" for CORS request. 원인 https://stackoverflow.com/questions/70843940/springdoc-openapi-ui-how-do-i-set-the-request-to-https springdoc-openapi-ui How do I set the request to HTTPS When I publish, I will use HTTPS requests ..
Resilience4j 자바 기반의 강력한 회복성 및 내결함성 라이브러리로, 분산 시스템 및 서비스에서 오류와 장애에 대응하는 데 사용 Resilience4j는 멀티 스레딩 환경에서 안전하게 동작하며, 고성능을 제공 서킷 브레이커 (Circuit Breaker): 서킷 브레이커 패턴을 구현하여 서비스 호출 중에 장애가 발생할 경우 재시도 및 회복을 관리합니다. 서킷이 열린 상태에서 호출을 차단하고, 특정 시간 동안 호출을 시도하지 않도록 설정할 수 있습니다. 한도 지정 (Rate Limiting): 요청을 한도 내에서 제한하고 초과하는 경우 요청을 거부하거나 대기시킬 수 있습니다. 반환 값 및 예외 처리 (Response and Exception Handling): 성공과 실패에 대한 반환 값을 처리하고..
Fallback Fallback 클래스는 Feign Client의 메서드가 실패했을 때 호출되는 대체 로직을 구현 Feign Client 인터페이스에 fallback 속성을 설정하여 Fallback 클래스를 연결 @FeignClient(name = "external-service", fallback = MyFallback.class) public interface MyFeignClient { @GetMapping("/api/resource") String getResource(); } @Component public class MyFallback implements MyFeignClient { @Override public String getResource() { // 실패 시 대체 로직을 여기에 구현 ..
WireMock WireMock은 가짜 HTTP 서버를 만들어서 실제 서비스와 상호 작용하는 것을 시뮬레이션하고, 테스트 중에 실제 서비스 대신 가짜 서비스를 사용하여 통합 테스트를 수행하는 데 사용 build.gradle dependencies { testImplementation("org.springframework.cloud:spring-cloud-contract-wiremock") } @AutoConfigureWireMock WireMock을 Spring Boot 애플리케이션의 통합 테스트에서 자동으로 구성하는 데 사용되는 어노테이션 이 어노테이션을 사용하면 WireMock 서버가 자동으로 시작되고 종료되며, 설정된 Mock API를 사용하여 테스트를 수행 @SpringBootTest(webEnv..
Spring Boot Logging Level 설정 # application.yml logging: level: com.snailvoyager..: DEBUG Feign Logging Level 설정 Java 설정 방법과 yml 설정 방법 두가지가 있다. 두가지 모두 설정하게 되면 application.yml 설정으로 적용된다. A. Java Configuration public class FeignConfig { @Bean Logger.Level feignLoggerLevel() { return Logger.Level.FULL; } } // configuration 속성으로 Config class 바인딩 @FeignClient(name = "foo-client", configuration = Feign..