이슈 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..
Spring Cloud OpenFeign Spring Cloud 프로젝트의 일부로, 마이크로서비스 아키텍처에서 HTTP 클라이언트로 사용되는 도구 Spring 어플리케이션에서 RESTful 서비스를 손쉽게 호출하고 통합하는데 도움 build.gradle 의존성 추가 ext { springCloudVersion = "2022.0.3" } dependencyManagement { imports { mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}" } } dependencies { implementation "org.springframework.cloud:spring-cloud-starter-openfeign..
@SpringBootTestSpring Boot 프로젝트에서 통합 테스트를 위해 사용되는 애노테이션Spring 컨텍스트를 확장하고 Spring Boot 애플리케이션의 전체 설정을 로드하여 테스트 환경을 구성내장 웹 서버를 사용하여 테스트를 실행@SpringBootTest // Spring Boot 통합 테스트 설정public class MyIntegrationTest { @Autowired private MyService myService; @Test public void testSomething() { // myService를 사용한 테스트 작성 }}SpringBootContextLoader 기본 사용: @ContextConfiguration(loader=...)..
Spring Boot 에서 MockMvc 사용 시 403 Forbidden 에러 발생 Spring Security를 사용하고 있으면 SpringBootWebSecurityConfiguration 자동 설정 모든 Controller 요청할 때 Spring Security가 적용되어 권한이 없으면 에러 발생 MockMvc의 CSRF 비활성화 Spring Security는 기본적으로 CSRF(Cross-Site Request Forgery) 공격을 방지하기 위해 CSRF 토큰을 사용 하지만 테스트 환경에서는 CSRF 토큰을 모의(Mock)로 주입하는 것이 번거로움 MockMvc 사용 시에는 CSRF 보호 기능을 비활성화하는 것이 편리 @Configuration @EnableWebSecurity public c..
WebMvcTest 웹 애플리케이션의 컨트롤러(Controller) 관련 테스트를 위해 사용 실제 웹 서버를 띄우지 않고도, Spring MVC 컨트롤러의 동작을 테스트 Spring 컨텍스트를 로드하고 의존성 주입(DI)을 사용하는 테스트 클래스에서 @Controller, @ControllerAdvice, @JsonComponent, Converter/GenericConverter, Filter, WebMvcConfigurer, HandlerMethodArgumentResolver 등 MVC 테스트에 필요한 설정만 로드 @Component, @Service, @Repository 등 불필요한 컴포넌트 로드 X 테스트에 필요한 컴포넌트는 @MockBean or @Import 활용해 사용 전체 애플리케이션의..