From 2da99e553e78f2cfbd038e2ac49036d4151a6ff7 Mon Sep 17 00:00:00 2001 From: soeunnPark Date: Mon, 2 Sep 2024 10:49:39 +0900 Subject: [PATCH 1/5] =?UTF-8?q?review=20=EC=BD=94=EB=93=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../catch_line/filter/MemberJwtAuthenticationFilter.java | 1 + .../catch_line/filter/MemberJwtAuthorizationFilter.java | 3 +++ .../catch_line/filter/OwnerJwtAuthenticationFilter.java | 5 +++++ .../catch_line/filter/OwnerJwtAuthorizationFilter.java | 2 ++ .../org/example/catch_line/filter/OwnerPreviewFilter.java | 4 ++++ .../example/catch_line/filter/RestaurantPreviewFilter.java | 3 +++ 6 files changed, 18 insertions(+) diff --git a/src/main/java/org/example/catch_line/filter/MemberJwtAuthenticationFilter.java b/src/main/java/org/example/catch_line/filter/MemberJwtAuthenticationFilter.java index 91a5ae8..9d118b4 100644 --- a/src/main/java/org/example/catch_line/filter/MemberJwtAuthenticationFilter.java +++ b/src/main/java/org/example/catch_line/filter/MemberJwtAuthenticationFilter.java @@ -19,6 +19,7 @@ import java.io.IOException; import java.util.Objects; +//TODO: 코드 리뷰 // 스프링 시큐리티의 필터 // /login 요청해서 username, password post로 전송하면 diff --git a/src/main/java/org/example/catch_line/filter/MemberJwtAuthorizationFilter.java b/src/main/java/org/example/catch_line/filter/MemberJwtAuthorizationFilter.java index 8bc5ce8..b9e4f3b 100644 --- a/src/main/java/org/example/catch_line/filter/MemberJwtAuthorizationFilter.java +++ b/src/main/java/org/example/catch_line/filter/MemberJwtAuthorizationFilter.java @@ -23,6 +23,9 @@ import java.util.List; import java.util.Objects; +//TODO: 코드 리뷰 + + @Slf4j public class MemberJwtAuthorizationFilter extends BasicAuthenticationFilter { diff --git a/src/main/java/org/example/catch_line/filter/OwnerJwtAuthenticationFilter.java b/src/main/java/org/example/catch_line/filter/OwnerJwtAuthenticationFilter.java index 38db7f8..3712ce1 100644 --- a/src/main/java/org/example/catch_line/filter/OwnerJwtAuthenticationFilter.java +++ b/src/main/java/org/example/catch_line/filter/OwnerJwtAuthenticationFilter.java @@ -23,6 +23,11 @@ // 해당 필터가 동작 // security config에서 formLogin disable해서 동작 안함. + +//TODO: 코드 리뷰 + + + @Slf4j public class OwnerJwtAuthenticationFilter extends UsernamePasswordAuthenticationFilter { diff --git a/src/main/java/org/example/catch_line/filter/OwnerJwtAuthorizationFilter.java b/src/main/java/org/example/catch_line/filter/OwnerJwtAuthorizationFilter.java index 4bd7c37..4c8c5eb 100644 --- a/src/main/java/org/example/catch_line/filter/OwnerJwtAuthorizationFilter.java +++ b/src/main/java/org/example/catch_line/filter/OwnerJwtAuthorizationFilter.java @@ -23,6 +23,8 @@ import java.util.List; import java.util.Objects; +// TODO: 코드리뷰 + @Slf4j public class OwnerJwtAuthorizationFilter extends BasicAuthenticationFilter { diff --git a/src/main/java/org/example/catch_line/filter/OwnerPreviewFilter.java b/src/main/java/org/example/catch_line/filter/OwnerPreviewFilter.java index 64d2ed8..b953765 100644 --- a/src/main/java/org/example/catch_line/filter/OwnerPreviewFilter.java +++ b/src/main/java/org/example/catch_line/filter/OwnerPreviewFilter.java @@ -20,6 +20,10 @@ import java.io.IOException; import java.net.URLEncoder; + +// TODO: 코드리뷰 + + @Slf4j @RequiredArgsConstructor public class OwnerPreviewFilter extends OncePerRequestFilter { diff --git a/src/main/java/org/example/catch_line/filter/RestaurantPreviewFilter.java b/src/main/java/org/example/catch_line/filter/RestaurantPreviewFilter.java index 01fbcd8..9d3c2f0 100644 --- a/src/main/java/org/example/catch_line/filter/RestaurantPreviewFilter.java +++ b/src/main/java/org/example/catch_line/filter/RestaurantPreviewFilter.java @@ -20,6 +20,9 @@ import java.util.List; import java.util.Objects; +// TODO: 코드리뷰 + + @Slf4j @RequiredArgsConstructor public class RestaurantPreviewFilter extends OncePerRequestFilter { From 27d8f40beea0002a522d624aabe896354abc5c99 Mon Sep 17 00:00:00 2001 From: I-migi Date: Mon, 2 Sep 2024 10:57:25 +0900 Subject: [PATCH 2/5] =?UTF-8?q?Q=20=ED=81=B4=EB=9E=98=EC=8A=A4=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=20=EC=9D=B4=EC=9C=A0=20=EC=BD=94=EB=93=9C=20=EB=A6=AC?= =?UTF-8?q?=EB=B7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../restaurant/repository/RestaurantRepositoryCustomImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/org/example/catch_line/dining/restaurant/repository/RestaurantRepositoryCustomImpl.java b/src/main/java/org/example/catch_line/dining/restaurant/repository/RestaurantRepositoryCustomImpl.java index 473b234..db92914 100644 --- a/src/main/java/org/example/catch_line/dining/restaurant/repository/RestaurantRepositoryCustomImpl.java +++ b/src/main/java/org/example/catch_line/dining/restaurant/repository/RestaurantRepositoryCustomImpl.java @@ -21,6 +21,7 @@ public class RestaurantRepositoryCustomImpl implements RestaurantRepositoryCusto private final JPAQueryFactory queryFactory; + // querydsl gradle 후 Q 클래스들이 제가 사용하려는 클래스들만이 아니라 모든 클래스들에 대한 Q 클래스가 생성되는데 다른 방법은 없는 것인지 궁금합니다 @Override public Page findRestaurantsByCriteria(Pageable pageable, String criteria, String type, String keyword) { QRestaurantEntity restaurant = QRestaurantEntity.restaurantEntity; // Q 클래스 사용 From 5f1f3cecbf90562ea9e4543f3f7843ed6233ca13 Mon Sep 17 00:00:00 2001 From: I-migi Date: Mon, 2 Sep 2024 10:59:42 +0900 Subject: [PATCH 3/5] . --- .../restaurant/repository/RestaurantRepositoryCustomImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/example/catch_line/dining/restaurant/repository/RestaurantRepositoryCustomImpl.java b/src/main/java/org/example/catch_line/dining/restaurant/repository/RestaurantRepositoryCustomImpl.java index db92914..8af08c4 100644 --- a/src/main/java/org/example/catch_line/dining/restaurant/repository/RestaurantRepositoryCustomImpl.java +++ b/src/main/java/org/example/catch_line/dining/restaurant/repository/RestaurantRepositoryCustomImpl.java @@ -21,7 +21,7 @@ public class RestaurantRepositoryCustomImpl implements RestaurantRepositoryCusto private final JPAQueryFactory queryFactory; - // querydsl gradle 후 Q 클래스들이 제가 사용하려는 클래스들만이 아니라 모든 클래스들에 대한 Q 클래스가 생성되는데 다른 방법은 없는 것인지 궁금합니다 + // querydsl gradle 후 Q 클래스들이 제가 사용하려는 클래스들만이 아니라 모든 클래스들에 대한 Q 클래스가 생성되는데 다른 방법은 없는 것인지 궁금합니다! @Override public Page findRestaurantsByCriteria(Pageable pageable, String criteria, String type, String keyword) { QRestaurantEntity restaurant = QRestaurantEntity.restaurantEntity; // Q 클래스 사용 From 8289c84f7db22554a5c5eb682797192d0baf48cd Mon Sep 17 00:00:00 2001 From: sangwonsheep Date: Mon, 2 Sep 2024 11:24:57 +0900 Subject: [PATCH 4/5] =?UTF-8?q?=EC=8A=A4=ED=81=AC=EB=9E=A9,=20=EC=8B=9D?= =?UTF-8?q?=EB=8B=B9=20=ED=94=84=EB=A6=AC=EB=B7=B0,=20Exception=20?= =?UTF-8?q?=EB=A6=AC=EB=B7=B0=20=EC=9A=94=EC=B2=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dining/restaurant/service/RestaurantPreviewService.java | 4 ++++ .../org/example/catch_line/exception/CatchLineException.java | 3 +++ .../java/org/example/catch_line/scrap/model/key/ScrapId.java | 2 ++ 3 files changed, 9 insertions(+) diff --git a/src/main/java/org/example/catch_line/dining/restaurant/service/RestaurantPreviewService.java b/src/main/java/org/example/catch_line/dining/restaurant/service/RestaurantPreviewService.java index 1b0d35f..7e2aa55 100644 --- a/src/main/java/org/example/catch_line/dining/restaurant/service/RestaurantPreviewService.java +++ b/src/main/java/org/example/catch_line/dining/restaurant/service/RestaurantPreviewService.java @@ -54,6 +54,10 @@ public Page restaurantPreviewPaging(Pageable pageable } + // 식당 프리뷰(홈 화면)를 조회할 때마다 DB에서 리뷰, 스크랩 데이터를 조회하고, 업데이트를 하면 서버의 부하가 클 것이라 예상하였습니다. + // 그렇기 때문에 조회할 때마다 업데이트가 아닌 스케줄러를 이용해서 1시간 마다 업데이트하는 방식으로 진행하고 있습니다. + // 이 방식보다 더 효율적이고 좋은 방안이 있을까요? + // 또한 홈 화면의 식당 프리뷰 조회 시마다 DB의 데이터를 계속 조회하는 것이 아닌 다른 좋은 방안이 있을까요? 떠오르는 것은 캐시를 활용하면 될 것 같습니다. @Scheduled(cron = "0 0 0/1 * * *") // @Scheduled(cron = "0 0 0 * * ?") public void scheduleUpdateRestaurantPreview() { diff --git a/src/main/java/org/example/catch_line/exception/CatchLineException.java b/src/main/java/org/example/catch_line/exception/CatchLineException.java index 86653c1..b1599bd 100644 --- a/src/main/java/org/example/catch_line/exception/CatchLineException.java +++ b/src/main/java/org/example/catch_line/exception/CatchLineException.java @@ -2,6 +2,9 @@ public class CatchLineException extends RuntimeException { + // Custom Exception의 최상위 Exception으로 이 Exception을 이용하고 있습니다. + // 다른 Custom Exception은 모두 이 Exception을 상속받고 있습니다. + // Exception에 추가로 넣어야 할 정보와 실무에서는 Custom Exception을 어떻게 사용하고 계신지 궁금합니다. public CatchLineException(String message) { super(message); } diff --git a/src/main/java/org/example/catch_line/scrap/model/key/ScrapId.java b/src/main/java/org/example/catch_line/scrap/model/key/ScrapId.java index 3a36a3c..3d0ba74 100644 --- a/src/main/java/org/example/catch_line/scrap/model/key/ScrapId.java +++ b/src/main/java/org/example/catch_line/scrap/model/key/ScrapId.java @@ -15,6 +15,8 @@ @AllArgsConstructor public class ScrapId { + // 현재 복합키를 이용해서 scrapId를 구현했습니다. + // 실무에서 복합키를 사용하는지, 사용한다면 사용하는 경우가 궁금합니다. private Long memberId; private Long restaurantId; From 2dcb5ad4b037ebccc940166adb133bcc20cf468d Mon Sep 17 00:00:00 2001 From: I-migi Date: Mon, 2 Sep 2024 11:26:08 +0900 Subject: [PATCH 5/5] =?UTF-8?q?=EB=A1=9C=EA=B7=B8=ED=8C=8C=EC=9D=BC,=20?= =?UTF-8?q?=ED=8A=B8=EB=9E=9C=EC=9E=AD=EC=85=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../catch_line/booking/waiting/service/WaitingService.java | 1 + src/main/resources/logback-spring.xml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/example/catch_line/booking/waiting/service/WaitingService.java b/src/main/java/org/example/catch_line/booking/waiting/service/WaitingService.java index 18c5e05..6e892eb 100644 --- a/src/main/java/org/example/catch_line/booking/waiting/service/WaitingService.java +++ b/src/main/java/org/example/catch_line/booking/waiting/service/WaitingService.java @@ -41,6 +41,7 @@ public WaitingEntity getWaitingEntity(Long waitingId) { .orElseThrow(() -> new WaitingException("웨이팅이 존재하지 않습니다.")); } + // 다른 사이트의 코드들을 참고해보면 서비스 메소드들에 트랜잭션을 붙이지 않은 메소드들도 많던데 트랜잭션을 붙여야 하는 경우와 붙히지 않는 경우의 차이가 궁금합니다 @Transactional(isolation = Isolation.SERIALIZABLE) public WaitingResponse addWaiting(Long restaurantId, WaitingRequest waitingRequest, Long memberId) { MemberEntity member = memberValidator.checkIfMemberPresent(memberId); diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml index a7f3bf0..c1c865e 100644 --- a/src/main/resources/logback-spring.xml +++ b/src/main/resources/logback-spring.xml @@ -1,6 +1,6 @@ - +