튜터님께 받은 피드백
1. 로그인 후 인증 흐름 개선 (세션 인증 vs 토큰 인증)
- 문제: 현재 로그인 후 인증 흐름이 자연스러워 보이지만, 사용자가 직접
http://localhost:8080/calendar.html
에 접근하면 로그인 없이 캘린더를 사용할 수 있습니다. - 해결책: 세션 인증 방식 또는 토큰 인증 방식을 도입하여 인증된 사용자만 캘린더 페이지에 접근할 수 있도록 해야 합니다. 특히 JWT (JSON Web Token) 기반의 인증 방식을 사용하는 것이 RESTful API와 함께 가장 많이 사용되는 방식입니다.
- 블로그 주제: "Spring Boot에서 JWT 기반 인증 구현하기" 또는 "세션 기반 인증과 토큰 기반 인증의 차이점 및 구현 방법"
2. Request Parameter로 패스워드 전송의 보안 문제
- 문제: 일정 삭제 시 패스워드를 URL의 쿼리스트링에 포함하여 전송하고 있는데, 이는 보안상 안전하지 않습니다.
- 해결책: Request Body에 패스워드를 포함시켜 전송하는 방식으로 변경해야 합니다. 이는 HTTPS로 데이터를 암호화하더라도 쿼리스트링은 보안 취약성이 있을 수 있기 때문입니다.
- 블로그 주제: "Request Parameter로 전송하는 패스워드의 보안 문제와 해결 방법"
3. DI 방식 개선 (필드 주입 vs 생성자 주입)
- 문제: 현재 필드 주입 방식을 사용하고 있는데, 생성자 주입 방식이 더 권장되는 이유에 대해 학습할 필요가 있습니다.
- 해결책: 필드 주입보다 생성자 주입을 사용하여 테스트가 용이하고, 코드의 의존성을 명확히 할 수 있습니다. 또한 불변성을 보장할 수 있습니다.
- 블로그 주제: "Spring DI 방식 비교: 필드 주입, 생성자 주입, Setter 주입"
4. Entity 생성 방식 개선
- 문제: 엔티티 생성 시 기본 생성자를 이용한 후 Setter 메소드를 통해 필드를 초기화하고 있습니다.
- 해결책: 정적 팩토리 메소드 또는 생성자를 이용한 초기화 방식을 사용하면 불변성 및 객체의 명확한 생성 로직을 보장할 수 있습니다.
- 블로그 주제: "정적 팩토리 메소드와 생성자를 사용한 객체 생성의 장점"
5. DTO의 공통 사용 문제
- 문제: 여러 API에서 공통으로 DTO를 사용하는 것은 변경에 취약하며, 필요하지 않은 필드가 null로 초기화되는 문제를 야기할 수 있습니다.
- 해결책: 각 API의 요구사항에 맞는 개별 DTO를 정의하여 유지보수성 및 코드의 안정성을 확보합니다.
- 블로그 주제: "DTO를 공통으로 사용하는 문제점과 해결 방안"
6. User와 Schedule 테이블의 연관 관계 설정
- 문제: User와 Schedule 테이블 간의 연관 관계가 설정되지 않았습니다. 사용자가 여러 개의 스케줄을 가질 수 있는 1:N 관계를 정의해야 합니다.
- 해결책:
Schedule
엔티티에user_id
필드를 추가하여 관계를 맺고, DB에서는 외래 키(Foreign Key) 제약을 설정하여 일관성을 유지합니다. - 블로그 주제: "Spring Data JPA를 사용한 엔티티 간의 연관 관계 설정 방법"
7. Setter 대신 객체 메소드 사용
- 문제: 현재 스케줄 정보를 업데이트할 때 Setter 메소드를 사용하고 있는데, 이는 명확하지 않으며 설명적이지 않습니다.
- 해결책:
update()
메소드를 사용하여 객체의 책임을 명확하게 하고, Setter 남용을 방지할 수 있습니다. - 블로그 주제: "Setter 대신 객체 메소드를 사용하는 이유와 장점"
8. 예외 처리 및 AOP 활용
- 문제: 현재 예외 처리에 대한 부분이 전반적으로 다루어지지 않았습니다.
- 해결책: Spring AOP를 사용한 전역 예외 처리 방식인
@RestControllerAdvice
를 도입하여 공통된 예외 처리를 구현할 수 있습니다. - 블로그 주제: "Spring Boot에서
@RestControllerAdvice
를 사용한 글로벌 예외 처리"
블로그 포스트 작성 가이드라인
- 개요: 피드백에 따라 프로젝트를 어떻게 개선했는지 전반적으로 설명합니다.
- 각 주제별 섹션: 위에서 제시한 각 개선 포인트를 상세히 다룹니다.
- 코드 예제: 개선된 코드와 함께 어떻게 문제를 해결했는지 설명합니다.
- 결론: 개선된 사항이 프로젝트에 어떤 영향을 미쳤는지 요약하고, 앞으로 학습할 주제나 개선할 부분을 간략히 언급합니다.
'TIL > 스파르타 TIL' 카테고리의 다른 글
[내일배움캠프] CH 3 일정 관리 앱 Develop (0) | 2024.10.13 |
---|---|
Spring의 IoC(제어의 역전)와 DI(의존성 주입) 이해하기 (0) | 2024.10.08 |
[내일배움캠프] 본캠프 TIL Spring 입문(3) (0) | 2024.09.28 |
[내일배움캠프] 본캠프 TIL Spring 입문(2) (0) | 2024.09.28 |
[내일배움캠프] 본캠프 TIL Spring 입문(1) (0) | 2024.09.27 |