[Spring 프로젝트] step 1 요구사항 및 리뷰

지니🧸·2023년 3월 7일
0

피드백 저장소

목록 보기
1/5

요구사항

  • validation을 고려한 회원가입 (토큰/세션 중 택 1), 로그인
  • 회원 수정 및 삭제
  • 비밀번호 저장 방법?

피드백

비즈니스 로직 분리

Controller의 비즈니스 로직을 Service로 옮기자

BO 객체나 Service 객체를 만들어서, 역할의 분리를 수행하자

  • AuthController의 authenticateUser, registerUser
  • MemberController의 updateUser, deleteUser

Service/UserService에 service 메서드 생성

Spring Bean 관리 잘하자

AuthController

CorsOrigin

@RestController
@RequiredArgsConstructor
@CrossOrigin(origins = "*", maxAge = 3600)
public class AuthController { ... }

CORS origin * 설정

  • 위험할 수도 있음
  • XSS 공격을 방어하는 로직이라서 실제 Origin이 어디인지 판단하고 넣는 것을 추천
  • 토이 플젝 수준이면 그냥 아예 이 어노테이션을 빼는게 나을수도 있음.

Model

@ManyToMany는 지양하자

  • 실제 데이터베이스에는 N:1 테이블 하나와 1:M 테이블 하나로 분리가 되기는 함
  • 실제 테이블과 객체가 매칭이 되지 않으므로 쿼리의 결과를 예측할 수 없다는 단점

솔루션 1

UserRole 엔티티 생성 > 테이블 생성

솔루션 2

User 엔티티 내 boolean 필드로 role 정의

signupRequest 객체를 받아서, User로 변환하는 메서드

만들자

UserMapper를 활용함

@Autowired을 통한 주입은 지양하자

  • @RequiredArgsConstructor 사용

doFilterInternal 에서 예외가 발생하면, return; 을 삽입해서 다음 필터로 넘어가지 않도록 하는게 일반적

상수 대신 final static int 사용하자

private final static int = #;

Username 과 email 을 기준으로 DB에 인덱스를 생성하자

public interface UserRepository extends JpaRepository<User, Long>

불변객체의 setter 생성 지양하자

@Data@ToString & @Getter로 변경

profile
우당탕탕

0개의 댓글