본문 바로가기

Spring19

[TIL]20230712 - 페이징 처리 게시글등을 조회하는 API 에서 응답하는 데이터의 갯수가 많아지면 클라이언트에서 볼때 아래로 쭉 늘어지게 되므로 페이지 처리를 통해 가독성 좋게 표현해야한다. 물론 서버는 그대로 한개의 리스트 형태로 데이터를 보내주고 프론트엔드에서 처리를 통하여 클라이언트에게 보여줄 수 있지만 Spring Data에서 페이징 및 정렬 기능을 제공하기 때문에 손쉽게 페이징, 정렬을 구현하여 프론트에게 보내줄 수 있다. 클라이언트에서 서버에게 조회 api 요청 시 페이징 처리에 필요한 몇가지 옵션과 함께 요청하면 서버측에서 페이징 처리를 통해 그에 맞춰 가공하여 보내줄 수 있다. page : 조회할 페이지 번호 size : 한 페이지에 보여줄 상품 개수 sortBy : 정렬 항목 isAsc : 오름차순 @GetMapping.. 2023. 7. 12.
[TIL]20230711 - 회원탈퇴 기능 구현 어제 주특기 주차 과제 5레벨을 완료하였는데 아직 다음 주차까지 3일 가량 시간이 남아서 진행한 과제에서 추가로 구현해볼만한 것들을 구현해보았다. 우선 회원탈퇴기능을 구현해보기로 하였다. 회원을 탈퇴하게 되면 회원이 작성한 게시글과 댓글이 삭제되고 관련된 댓글이 삭제 되도록 하였다. 컨트롤러 @DeleteMapping("/user/withdrawal") public JsonResponse withdrawal(@RequestParam Long id, @AuthenticationPrincipal UserDetailsImpl userDetails){ User user = userDetails.getUser(); userService.withdrawal(id, user); Result result = new R.. 2023. 7. 11.
[Spring]@ControllerAdvice를 이용한 전역 예외 처리 게시판 프로젝트를 진행하면서 게시글을 조회하거나 수정하는 경우 PostResponseDto로 엔티티를 변환하여 클라이언트에게 반환하였다. 하지만 조회나 수정 과정에서 요청받은id에 해당하는 게시글이 없거나 수정하하려는 유저와 게시글의 작성자가 다를때는 예외를 발생시켜 중단하도록 로직을 구성하였다. 이때 예외가 발생하면 서버에서는 콘솔창에 예외메시지와 함께 알아볼 수 있지만 클라이언트에게는 아무것도 반환되지 않으므로 어떤 이유로 반환값이 없는지 알 방법이 없다. 그러므로 예외처리를 통해 클라이언트에게 예외가 발생한 이유를 알려주어야한다. 하지만 예외처리를 해당 컨트롤러의 메소드에서 try - catch로 처리하게 되면 성공시에는 ResponseDto로 반환하지만 예외가 터졌을 시에는 반환 타입이 달라져야하.. 2023. 7. 10.
[WIL]20230626~20230702 DI, IoC, Bean 이번주에 공부한 것들 이번주는 주특기주차 첫 주로써 본격적으로 스프링에 대해 배운 한 주였다. DI는 (Dependency Injection) 의존성 주입으로 스프링의 다른 프레임워크와 차별화 된 의존 관계 주입 기능이다. 우선 의존성이란 의존대상 B가 변하면, 그것이 A에 영향을 미친다. - 이일민, 토비의 스프링 3.1, 에이콘(2012), p113 의존성을 주입한다는 것은 객체 내에 객체를 생성하여 의존 관계를 맺어 주는것이 아니라 외부에서 객체를 생성한 후 주입시켜주는 방식이다. 내부에서 의존 관계를 맺은 경우 public class A { private B b = new B(); } 객체를 내부에서 직접 주입받는 경우의 코드이다. 물론 이 상태로도 정상적으로 실행되지만 만약 소비자가 치킨대신 피.. 2023. 7. 2.
[Spring] Spring Security Spring Security프레임워크는 Spring서버에 필요한 인증 및 인가를 위해 많은 기능을 제공해 줌으로써 개발의 수고를 덜어준다. gradle.build에 추가 // Security implementation 'org.springframework.boot:spring-boot-starter-security' 스프링에서 모든 호출은 DispatcherServlet을 통과한뒤 각 요청에 맞는 컨트롤러로 뿌려진다. 이때 모든 요청에 대해 처리해야 할 필요가 있을때 DispatcherServlet이전 단계가 필요한데 이것이 Filter이다. Spring Security또한 인증 및 인가를 처리하는데 Filter를 사용하는데 Spring Security는 FilterChainProxy를 통해서 상세로직을.. 2023. 7. 1.
[TIL]20230628 - Spring Security, Spring Ec2 배포 오늘은 저녁 전까지 Spring 숙련 1주차 강의를 들었다. 강의 내용으로는 쿠키와 세션, JWT, Spring Securiry프레임워크 등 인증 인가에 관련된 내용이었다. 기존에 독학으로 만들었던 게시판 프로젝트에서는 JWT 토큰을 만드는것 까진 성공했으나 클라이언트에게 쿠키로 전달하는 법을 몰라서 String으로 리턴해주었었는데 이번 강의를 보면서 클라이언트에게 setCookie해주어 브라우저의 쿠키에 저장되는것을 배웠다. 또한 이전에는 service에서 토큰을 검증하여 확인하려했었지만 잘 안되어 실패했던 경험이 있었는데 Spring Security프레임워크를 사용하니 요청이 컨트롤러에 접근하기 전에 filter로 먼저 필요한 요청에 대해 유저의 인증과 인가를 처리해 주어 문법은 어려웠지만 확실히 유.. 2023. 6. 29.