전체 글
2023.11.13 TIL
오늘 한 것 스프링 강의 듣기 알고리즘 스터디 스프링 강의 클라이언트에서 요청 데이터를 받을 때, 유효성 검증을 편하게 도와주는 Validatoin 관련해서 강의를 들었다. 기본적으로 제공하는 유효성 검증 어노테이션들과, 커스텀으로 만들어 검증하는 법을 배웠다. 입력값에 대한 검증은 서버에서 할 필요없이 클라이언트에서 하면 되지않나 생각했지만 찾아보니 클라이언트, 서버 이중으로 검증하는게 더 좋다고한다. Validation 관련해서 공부하고 정리하였으니 참고하면 좋을 것 같습니다. https://mocha-coding.tistory.com/30 [Spring] 유효성 검증 - Validation Validation이란? 로직을 처리하기 위해 필요한 데이터 ( 사용자 또는 다른 서버의 request 등 )..
2023.11.10 TIL
오늘 한 것 스프링 강의 듣기 내배캠 특강 듣기 스프링 강의 오늘은 SpringSecurity 주제의 강의를 들었다. SpringSecurity는 어제 들었던 인증/인가에 대해 Spring서버에서 개발하기 쉽게 많은 기능을 제공해주는 프레임워크다. SpringSecurity의 proxy filter로 시큐리티만의 필터모음(Filter Chain)을 실행하게된다. 시큐리티는 기본적으로 세션 인증을 기반으로 동작하므로 jwt 인증을 위해선 필터의 중간에 jwt 인증/인가를 위한 필터를 커스텀해서 세션 인증을 담당하는 필터의 전 순서에 넣어준다. + 시큐리티의 동작원리, 다양한 시큐리티 필터의 역할 강의를 듣기전에 혼자 설정하고 구현할 정도로만 공부했는데, 강의를 들으면서 튜터님의 설명이 좋아 시큐리티가 어떤..
2023.11.09 TIL
오늘 한 것 스프링 강의 듣기 알고리즘 스터디 스프링 강의 오늘은 인증과 인가가 무엇인지와 웹 어플리케이션에서 인증을 처리하는데 어떤 방식이 있는지에 대해 강의를 들었다. 웹 어플리케이션 인증 방식은 세 가지가 있는데, 쿠키 - Client(브라우저)에서 사용자의 인증정보를 가지고있음. 세션 - 서버의 세션저장소 (DB가 될수도있고, 인 메모리 저장소가 될 수 도있다. 구현하기나름) JWT(토큰) - Client(브라우저)에서 사용자 정보, 암호화 정보 등을 조합한 암호화된 토큰을 가지고있음 (쿠키 또는 헤더) 인증 방식이 있다. 각 인증 방식별 처리 흐름과, 장단점등을 블로그로 정리하면서 복습해봐야겠다. 알고리즘 스터디 오늘 배정받은 알고리즘 스터디 팀원들과 앞으로 어떤식으로 스터디를 진행할 지 ..
2023.11.08 TIL
오늘 한 것 스프링 챌린지반 특강 Spring 챌린지반 특강 오늘 스프링 챌린지반 특강은 스프링이 무엇인지 어떤 특징을 가지고 있는지에 대해 배웠습니다. 배운 내용을 정리하여 포스팅 해놓았으니 참고하실분은 참고하시면 좋을 것 같습니다~ https://mocha-coding.tistory.com/33 [Spring] 스프링(Spring)이란? Spring이란? 엔터프라이즈용 Java 애플리케이션을 간편하게 만들게 해주는 도구 스프링이 등장하기 이전에는 비즈니스 로직을 구현하기 위해 기술 자체에 대한 공부를 추가적으로 해야만 했습니 mocha-coding.tistory.com
2023.11.07 TIL
오늘 한 것 개인 프로젝트 개인프로젝트 SSE 방식으로 알림 기능을 구현했는데, 오늘 회의를 통해 앱 푸시와 알림은 다르다는 것을 알게되었다.. 생각해보니 SSE 구독을 위해선 앱을 켜야 되는데, 보통 앱을 안켜도 푸쉬알림이 온다. 앱 푸쉬는 구글의 FCM으로 구현 가능하다고 하니, 내일 일어나서 알아봐야겠다. 결론: 1. 알림 기능 만들어놓은게 무쓸모가 되었음.. 그래도 공부하고 구현이 가능하니 나중에 웹 개발할 때 요긴하게 써먹어야겠다. 2. FCM 구현 가자!
[JPA] 영속성 컨텍스트와 Entity 상태
※ 영속성 컨텍스트란? 영속성 컨텍스트는 간단히 말하면 Entity 객체를 효율적으로 쉽게 관리하기 위해 만들어진 공간입니다. JDBC API와 SQL Mapper를 이용하여 개발자들이 직접 쿼리를 작성해 DB에 데이터를 관리해왔던 시절에서 JPA 를 사용하여 쿼리를 작성하지않고 객체를 활용하여 DB에 데이터를 관리할 수 있게 되었습니다. 이러한 과정을 위해 JPA는 영속성 컨텍스트에 Entity 객체들을 저장하여 관리하며 DB와 소통합니다. EntityManger 영속성 컨텍스트에 접근하여 Entity 객체들을 제어하기 위해서는 EntityManger가 필요합니다. 더보기 EntityManager는 이름 그대로 Entity를 관리하는 관리자의 역할을 합니다. 개발자들은 EntityManger를 사용해서..
[Spring] REST API 테스트 코드 작성하기
내일배움캠프 Spring 개인과제 (익명 게시판 API구현하기)를 하면서 TDD 구현 프로세스로 하자고 마음먹고 진행했다. 그래서 기본적인 설계 (유즈케이스, ERD, API 명세)를 작성하였고 컨트롤러 테스트코드 -> 컨트롤러 -> 서비스테스트코드 -> 서비스 , 레포지토리 순서로 구현을 생각해서 가장 먼저 컨트롤러 테스트 코드를 작성해보았다. 컨트롤러 테스트 코드 작성하기 컨트롤러 테스트도 그렇고 각 테스트는 단위 테스트로 작성하였다. 그래서 컨트롤러가 의존하는 컴포넌트(서비스)는 Mokito 프레임워크를 이용해 Mocking하여 진행하였다. @Import(AppConfig.class) //PasswordEncoder Bean 설정 클래스 @WebMvcTest(PostController.class) ..
2023.11.06 TIL
오늘 한 것 개인 프로젝트 개인프로젝트 어제에 이어서 구현하던 알림기능을 다 만들었다. 다양한 통신 방식 (폴링, 웹소켓 SSE(Server-Sent-Event) 중 SSE 방식으로 통신하는 것을 채택했고 Spring에서는 seeEmitter API를 통해 편리하게 구현할 수 있게 제공해서 해당 API를 이용하여 구현하였다. Server -> Client 통신 방식에 관련해서는 https://velog.io/@dev_jazziron/Polling-Long-Polling-SSE-WebSocket Polling / Long Polling / SSE / WebSocket 클라이언트가 http request를 서버로 계속 보내서 이벤트 내용을 전달 받는 방식클라이언트가 계속적으로 request를 보내기 때문에..