@JsonProperty를 사용한 객체 매핑 (지원되지 않음)OpenFeign은 Jackson을 활용한 JSON 변환(Body 처리)을 지원하지만, 쿼리스트링(Query String) 변환에서는 @JsonProperty를 인식하지 않습니다.public class UserRequest { @JsonProperty("user_name") private String name; @JsonProperty("user_age") private int age; // 기본 생성자, Getter, Setter 생략}@FeignClient(name = "userClient", url = "http://example.com")public interface UserClient { @GetMapp..
Spring MVC에서 HTTP 요청의 데이터를 객체로 바인딩할 때 사용하는 어노테이션입니다.주로 폼 데이터를 DTO(또는 VO) 객체로 매핑할 때 사용됩니다.컨트롤러 메서드의 매개변수나 모델에 추가할 객체에 적용할 수 있습니다.HTTP 요청의 parameter(쿼리 스트링, 폼 데이터)를 자동으로 객체에 바인딩함.GET/POST 요청 모두 지원.내부적으로 setName(), setAge() 같은 setter 메서드를 사용하여 값을 할당함.import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.ModelAttribute;import org.springframework.web.bind.ann..
JPASQLQuery네이티브 SQL 쿼리를 생성하고 실행하기 위한 QueryDSL 클래스SQL 힌트나 기타 데이터베이스에 종속적인 설정(예: 인덱스 힌트)을 적용반면, JPAQuery는 JPQL을 생성하는 데 사용됩니다.JPQL은 데이터베이스 독립적인 추상화 계층을 제공하기 때문에,힌트나 플래그 같은 SQL 종속적인 요소를 직접 추가하는 기능을 지원하지 않습니다.addFlag()addFlag(QueryFlag.Position, String) 메서드는 쿼리에 특정 플래그를 추가하여 QueryDSL이 생성하는 SQL에 원하는 텍스트(예: SQL 힌트)를 삽입할 수 있도록 해줍니다.첫 번째 인자: 플래그를 삽입할 위치 (QueryFlag.Position)두 번째 인자: 삽입할 텍스트 (예: SQL 힌트)htt..
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): 성공과 실패에 대한 반환 값을 처리하고..