11.15 schedule 프로젝트 트러블 슈팅

JangUT·2024년 11월 15일

API 명세서 작성은 이전에 한번 작성해본 경험이 있어서 어렵지 않게 작성했습니다.

ERD 또한 2개에 테이블을 생성하고 서로 연관 관계를 맺는데 어렵지 않게 작성했습니다.

SQL query문 작성은 READ.ME에 코드별로 입력해서 어렵지 않게 작성했습니다.

일정 CRUD 기능을 먼저 구현한 후에 유저 CRD를 작성하려 했으나

유저가 먼저 등록이 되어야 일정을 생성할 수 있기 때문에 유저 CRD를 먼저 구현

이후에 일정 CRUD 기능을 구현

일정 Entity와 유저 Entity에 동일하게 작성일과 수정일이 포홤

BaseEntity 라는 부모 클래스 생성 후 자식 클래스에 상속

public class Schedule extends BaseEntity {

	@CreatedDate
    @Column(updatable = false)
    private  LocalDateTime createdDate;

    @LastModifiedDate
    private  LocalDateTime modifiedDate;
    
   // 필드 값 중복으로 BaseEnity 클래스 생성 후 상속


}
	public class User extends BaseEntity {
	
    @CreatedDate
    @Column(updatable = false)
    private  LocalDateTime createdDate;

    @LastModifiedDate
    private  LocalDateTime modifiedDate; 
    
    // 필드 값 중복으로 BaseEnity 클래스 생성 후 상속


}


```public abstract class BaseEntity {

    @CreatedDate
    @Column(updatable = false)
    private  LocalDateTime createdDate;

    @LastModifiedDate
    private  LocalDateTime modifiedDate;

	}

application 실행 시 MySQL 컬럼이 java 지정 순서가 아닌 알파벳 순으로 나열

직접 MySQL console창 실행 후 테이블 생성해줌

ddl-auto=create 설정으로 테이블 drop 후 create 실행되서 효과 없음

  1. 일정 삭제 기능 구현 시 반환타입을 응답 Dto로 설정

-> 삭제 시 반환되는 값이 없어야 함 ->

Contorller클래스에서 ResponseEntity 반환 타입 설정

Service클래스에서 반환타입 없는 void로 실행

  1. 일정 수정 및 일정 부분 수정 코드 작성 후 application 실행 후 postman 실행 시수정 값 이외에 값이 null로 반환됨 수정된 값 이외에 값도 get 메서드로 반환일정 수정 코드

수정 전

public ScheduleResponseDto updateSchedule(Long id, String title, String contents) {
       
	    Schedule findSchedule = scheduleRepository.findByIdOrElseThrow(id);
        Schedule updateSchedule = new Schedule(title, contents);

        return new ScheduleResponseDto(findSchedule.getId(), updateSchedule.getTitle(), 
 							 updateSchedule.getContents());
    }

수정 후

public ScheduleResponseDto updateSchedule(Long id, String title, String contents) {
     
	    Schedule findSchedule = scheduleRepository.findByIdOrElseThrow(id);
        Schedule updateSchedule = new Schedule(title, contents);

      return new ScheduleResponseDto(findSchedule.getId(), updateSchedule.getTitle(), 
							 updateSchedule.getContents(), findSchedule.getusername());
  }
  1. 로그인 기능 구현 및 회원가입

Filter 에 대한 지식부족으로 강의를 반복적으로 학습하고 코드를 작성하려 했으나

일단 강의 내용에 나온 코드를 따라서 타이핑을 진행함

로그인이 성공했다는 로직을 실행하려 했으나 어려워 구현 실패함.

userController 클래스에서 회원가입 postMapping을 Void로 진행한 후에

postman 입력시 정상적으로 코드만 반환됨

하지만 유저를 생성하려하면 로그인해주세요 라는 로그가 반복적으로 실행됨

Fiter클래스에서 선언한 배열 값을 추가함.

추가 전

private static final String[] WHITE_LIST = {"/users/*"};

추가 후

private static final String[] WHITE_LIST = {"/users/*","/users","/schedules","/schedules/*"};

로그인 기능은 제대로 구현하지 못한 것 같습니다.

email과 password를 입력하면

log.info("정상적으로 로그인 되었습니다.")

라는 성공 로직을 실행시키야 하는데 어려운것 같습니다. 나중에 피드백 영상을 보고 여러 번 반복해서 써봐야 할것 같습니다.

Spring 에서 사용하는 Annotation이 여러가지가 있는 것 같은데 일단 지금 배운것들 부터
어떤 역할하는지 습득하고 이후에 계속적으로 학습해야 할 것 같습니다.

profile
평범한 개발자

0개의 댓글