본문 바로가기

심화 캠프 정리

(7)
RestTemplate vs FeignClient 외부 API를 사용할때 사용해본적이 없는 두가지의 두가지의 통신 방법을 잘 몰라서 각 방법에 대해 장단점에 대해서 정리 1. RestTemplateRestTemplate은 Spring의 HTTP 요청을 위한 동기식 템플릿으로, RESTful 서비스와의 통신을 쉽게 만들어 준다특징직접 구성 필요: 헤더, 요청 본문 등을 수동으로 구성해야 한다구조화된 API 호출: GET, POST, PUT, DELETE 등 HTTP 메서드에 대한 다양한 메서드를 제공직접적인 제어 가능: 클라이언트 요청/응답 처리를 세밀하게 제어 가능장점코드가 명확하고 심플하며 Spring 프로젝트에서 기본적으로 제공통신 로직이 단순한 경우 유리Spring의 기존 라이브러리와의 호환성 보장단점매번 요청/응답 객체를 설정해야 하므로 코드가 ..
ModelAttribute @ModelAttribute란?Spring MVC에서 HTTP 요청 데이터를 컨트롤러 메서드의 파라미터나 모델에 바인딩하기 위해 사용되는 어노테이션이다. 이번프로젝트에서 ModelAttribute를 사용한 이유는 아래 코드와 같이 전체 조회 시에 서치 옵션에 따라서 조회의 결과가 달라지는 경우 아래와 같이 어마어마한 양의 RequestParam을 볼 수 있다. 이는 코드의 가독성을 떨어트릴 뿐만 아니라 실제로 코드 작성 시 실수를 할 가능성이 너무 많아진다. @PreAuthorize("hasAnyRole('CUSTOMER')")@GetMapping("/orders")public ResponseEntity>> getAllOrdersCustomer( Pageable pageable, @Authen..
PageableArgumentResolver PageableArgumentResolver란 무엇인가?PageableArgumentResolver는 Spring MVC에서 제공하는 기능으로, 컨트롤러 메서드에서 Pageable 타입의 파라미터를 사용할 수 있게 해주는 역할을 한다.즉 Pageable에 대한 클라이언트의 요청이 들어왔을 때 컨트롤러에 도달하기 전 관련된 요청 파라미터들을 바인딩하는 데 사용된다.예를 들면 서비스에서는 매장 조회를 50개까지 제한하고 있지만 클라이언트가 100개를 보낸다면 PageableArgumentResolver를 통해 조회 컨트롤러에 도달하기 전에 50개로 제한해서 컨트롤러에 전해주는 역할을 담당한다. 좀 더 구체적으로 들어가서 동작하는 순서를 본다면 클라이언트 -> DispatcherServlet -> Handle..
동적쿼리 BooleanExpression BooleanExpression은 QueryDSL에서 논리 조건을 표현하는 타입 클래스이다.where 절에서 사용가능하고 동적 조건조합을 지원 조건을 동적으로 제어가 가능하기때문에 특정 조건으로 서치를 할때사용한다.여러 조건이 사용가능하다 and, or, not 등등..  https://developer-backend.tistory.com/105 2024-11-13 동적쿼리 OrderSpecifier심화 프로젝트를 진행하면서 동적쿼리에 대한 정리와 동적쿼리 중 정렬(orderBy)에 사용되는 OrderSpecifier을 사용하여 공통 코드를 작성해보려고 한다. 동적쿼리란 사용자의 입력에 따라 조건이나developer-backend.tistory.com정렬 조건 코드에서 조금수정해서 테스트 환경 구성@Ge..
동적쿼리 OrderSpecifier 심화 프로젝트를 진행하면서 동적쿼리에 대한 정리와 동적쿼리 중 정렬(orderBy)에 사용되는 OrderSpecifier을 사용하여 공통 코드를 작성해보려고 한다. 동적쿼리란 사용자의 입력에 따라 조건이나 정렬 방식을 유현하게 변경하는 기능이다.리뷰를 별점이 있다고 가정했을때 별점 많은순 별점 적은순 등 사용자가 원하는 입력에 따라 결과를 변경할 수 있게 한다. 그중 OrderSpecifier는 QueryDSL에서 쿼리 결과를 정렬하기 위한 클래스 이다.아래의 코드는 Pageable을 사용한 간단하게 작성한 공통 처리 코드이다. Entity, Controller, Dto, Serive, Repository를 간단하게 구성후 테스트를 진행@Getter@Builder@NoArgsConstructor(acce..
PreAuthorize @PreAuthorize 애너테이션은 무엇인가?메서드 호출전에 특정한 조건을 체크하여 접근을 허용하거나 거부하는 기능이다.Spring Expression Language 기능을 사용하여 복잡한 권한 조건도 간단하게 표현을 가능하게 해 준다.SpEL는 아래의 링크로 확인 가능하다.출처: https://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/expressions.html 8. Spring Expression Language (SpEL)This section introduces the simple use of SpEL interfaces and its expression language. The complete la..
생성자 수정자 자동으로 생성하기 Entity에서 생성일, 수정일,  생성자, 수정자를 자동으로 기입하기 위해서는 어플리케이션 위에 @EnableJpaAuditing을 사용하여 활성화를 시켜 사용한다.@CreatedDate@CreatedBy@LastModifiedBy@LastModifiedDate 하지만 막상 사용된걸 본다면@CreatedDate@LastModifiedDate 위 두개의 어노테이션만 동작하는걸 확인할 수 있다.@EntityListeners(AuditingEntityListener.class) AuditingEntityListener에 대해서 간략하게 설명하자면 다음과 같다.Spring Data JPA에서 Auditing 기능을 활성화하는 데 사용되는 JPA 이벤트 리스너이다. 이 리스너는 엔티티의 상태 변화(생성, 수정 ..