1. build.gradle
[1] OpenFeign
implementation 'org.springframework.cloud:spring-cloud-starter-openfeign
이거는 HttpURLConnection
, RestTemplate
, OpenFeign
, WebClient
가 있는데 이중에 OpenFeign
을 사용한 이유가 무엇인가요?
[2] JWT
implementation 'io.jsonwebtoken:jjwt-jackson:0.11.5'
이거는 jjwt의 gradle 항목을 보면 3개의 의존성이 추가하라는데, 이거 하나만 사용하는 이유가 있나요?
[3] Jackson
implementation 'com.fasterxml.jackson.core:jackson-databind:2.14.2'
이거도 추가한 이유가 있나요?
[4] MySQL, H2
implementation 'mysql:mysql-connector-java:8.0.33'
runtimeOnly 'com.h2database:h2'
이거는 implementation
, runtimeOnly
, testImplementation
, testRuntimeOnly
에 대해 검색해보고, 다시 적용해보면 좋을 것 같아요~
[5] 들여쓰기
implementation 'mysql:mysql-connector-java:8.0.33'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testCompileOnly 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok'
runtimeOnly 'com.h2database:h2'
이거 확인점요
2. 코드
[1] Create, Read, Update, Delete 각각으로 나누어진 컨트롤러들
현재 상태에서 굳이 나눌 필요가 있을까요??
[2] 전체 컨트롤러
컨트롤러 코드들을 다 확인해보니까 더 좋은 방법이 있을텐데, HttpServletRequest
를 파라미터로 받는 이유가 있나요?
[3] 어노테이션 컨벤션
따로 지정된게 있나요? 순서가 서로 달라서 안정했으면 정하는게 좋아보입니다.
GulbiUpdateController
@RequiredArgsConstructor
@RequestMapping("/api/gulbis")
@RestController
LoginController
@RequiredArgsConstructor
@RestController
@RequestMapping("/api")
MemberService
@RequiredArgsConstructor
@Transactional(readOnly = true)
@Service
GulbiUpdateService
@RequiredArgsConstructor
@Service
GulbiCreateService
@RequiredArgsConstructor
@Transactional
@Service
[4] API 응답
지금 모든 요청에 대한 성공 응답이 200 OK로 보내질 것 같은데 맞나요?
그리고 이것도 응답 부분 코드 컨벤션이 중구난방이라 확인점요
[5] @Transactional
GulbiCreateService에 클래스 위에 @Transactional
가 붙여있고, 메서드에서도 @Transactional
이 붙어있네요
[6] 접근 제어자
Service에 있는 접근 제어자들 제대로 된건지 확인 요청이요
한 곳에서 private가 되어야 하는데, public으로 되어 있어서 다른 곳도 전부 확인해보면 좋아보입니다
[7] @Query
이거 쿼리문 보기 힘든데, SELECT - FROM - WHERE 이렇게 줄바꿈으로 해서 나눠주세요.
AND도 줄바꿈해서 구분하면 더 읽기 편할 것 같아요
[8] @EntityListeners(AuditingEntityListener.class)
제가 알기론 이걸 적용하면 Application.java에 어노테이션 하나 추가해야 동작하는 걸로 아는데 확인점요