본문 바로가기

프로젝트23

GiftFunding) 스켸줄러 이용해 친구 요청 거절 항목을 하루 뒤 삭제 내 프로젝트에서 스켸줄러가 이용될 구간은 많은데 우선은 친구 요청을 거절했을 때 하루에 한 번씩 REJECT 항목을 찾아 제거 해주려고 한다. 그러기 위해서는 일단 Friend 테이블에 updated_at 컬럼을 추가해야한다. 스켸줄링 기능 구현 1. main application에 @EnableScheduling 추가 2. scheduler를 사용할 Class에 @Component, Method에 @Scheduled추가. @Scheduled 규칙 -> Method는 void타입 -> Method는 매개변수 사용 불가 요렇게 해주면 됨. 참고로 @Component 꼭 해줘야 된다 ! cron 규칙에 따라 원하는 시간 작성하면 끝 2023. 12. 13.
GiftFunding) Elasticsearch를 활용하여 상품검색 기능 구현 해줘야 할 일은 크게 3가지 1. 인덱스 생성 2. 데이터 저장 3. 검색 API 요청 * Elasaticsearch의 Client 자바에서 ES API를 이용하기 위해서 ES에서 만들어 놓은 클라이언트가 필요함. ES 7버전까지 Client는 HighLevelClient와 LowLevelClient가 있음. HighLevelClient는 API를 추상화시켜 놓아서 SDK 형식으로 사용할 수 있음. ES 8버전으로 넘어오면서 이 기능이 더이상 사용되지 않음. Elasticsearch 연결 build.greadle에 아래의 의존성 추가 implementation 'org.springframework.boot:spring-boot-starter-data-elasticsearch' Elasticsearch 구.. 2023. 12. 9.
GiftFunding) Docker Compose로 es와 kibana 띄우기 + nori 까지 설치 이전 포스팅에서 따로따로 docker image 다운받고 실행시켜줬는데 이걸 docker-compose를 이용해서 한 번에 실행시키도록 했다. Docker Compose? 여러 개의 컨테이너들을 관리, 실행하기 위한 툴로 각각 독립된 컨테이너의 실행을 정의. yml 포맷으로 작성되고 여러 컨테이너들을 한 번에 관리할 수 있게 도와줌. 작성 법 : 프로젝트 루트 경로에 파일을 만들고 실행 설정을 적어둠. 터미널에서 도커 명령어를 사용하여 컨테이너를 실행하거나 종료시킴. : yml 파일은 크게 버전 정의, 서비스 정의, 볼륨 정의, 네트워크 정의의 4가지 항목으로 구성. 많이 사용하는 것은 서비스 정의이고, 볼륨과 네트워크는 서비스로 생성된 컨테이너에 선택적으로 사용. : yml파일에서 들여쓰기 할 때 탭은.. 2023. 12. 9.
GiftFunding) 도커에 Elasticsearch, Kibana 컨테이너 다운 및 실행 Elasticsearch를 설정하는 방법 2가지 1. 공식 사이트에서 다운받아 실행 2. docker이미지 사용 나는 docker이미지를 사용하는 방식으로 구현해보겠다. Docker에 Elasticsearch image 다운 $ docker pull docker.elastic.co/elasticsearch/elasticsearch:7.9.1 image 설치 확인 $ docker images 컨테이너 구동 docker run —name [붙여줄컨테이너이름] -e [환경변수지정] -d(프로세스를 백그라운드로 실행한다는 의미) -p [포트정보] 실행할 이미지 정보까지 입력 $ docker run -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" --n.. 2023. 12. 8.
GiftFunding) 헤더에 JWT 토큰으로 로그인 후 사용자 정보 얻기 프로젝트에 로그인 기능을 구현하고 추후 권한이 필요한 리소스에 접근할 때 헤더에 입력된 토큰을 컨트롤러에서 @ReqeustHeader로 받아와서 서비스 단에 넘겨준 후 토큰에서 claims를 파싱해서 subject를 뽑아내고 DB에서 사용자를 찾아 검증하는 로직을 만들었었다. 근데 멘토님이 컨트롤러에서 Authentication을 컨트롤러에서 받아오면 서비스 단에 헤더에 입력된 토큰으로부터 파싱하는 작업이 필요 없을 것이라고 하셔서 적용해보기로 했다. @AuthenticationPrincipal 로그인 한 정보 받아오기 로그인 사용자가 필요할 때 매번 서버에 요청을 보내 DB에 접근해서 데이터를 가져오는 것은 비효율 적이다. 한 번 인증된 사용자 정보를 세션에 담아놓고 세션이 유지되는 동안 사용자 객체를.. 2023. 12. 1.
GiftFunding)필터 내 예외 처리 접근 권한이 필요한 리소스에 접근 할 때 토큰의 유효성을 검증하는 과정에서 @ControllerAdvice, @ExceptionHandler로 처리해 오류 코드를 내려주려고 했는데 null 에러가 뜨는 것을 확인했다. 다른 분들이 피드백을 주셨는데 필터 내 예외처리는 일반 컨트롤러단에서 예외처리하는 것과 다르게 해줘야 한다는 것을 알게되었다. @ControllerAdvice 와 @ExceptionHandler - @ExceptionHandler는 @Controller가 적용된 Bean에서 발생하는 예외를 잡아 하나의 메서드에서 처리. - @ControllerAdvice는 @Controller 어노테이션이 적용된 모든 곳에서 발생하는 예외를 처리. 따라서 @ControllerAdvice가 적용된 클래스에 .. 2023. 11. 30.
GiftFunding) Dirth Checking (feat.회원정보 입력된 부분 일부만 수정할 때) 더티체킹(Dirth Checking)이란 ? Dirth ) 엔티티 데이터의 변경된 부분 Dirth Checking) 변경된 부분을 감지한다. JPA에서 영속성 컨테이너가 관리하는 엔티티의 상태를 감지해서 변경된 부분이 있다면 자동으로 트랜잭션이 끝나는 시점에 데이터베이스에 반영하는 기능. 개발자가 update 관련된 쿼리를 작성하지 않아도 되기 때문에, 코드의 복잡성을 줄일 수 있다는 특징이 있다. 더티 체킹 조건 영속성 컨텍스트에서 관리되는 엔티티 영속성 컨텍스트는 엔티티를 처음 조회할 때 시작되며, 이후 변경을 감지한다. 준영속(Detach된 엔티티)/비영속(DB에 반영되기 전 처음 생성된 엔티티) 상태의 엔티티는 더티체킹의 대상이 되지 못 한다. == 값을 변경해도 DB에 반영되지 않는다. 영속성 .. 2023. 11. 30.
GiftFunding) Spring Boot와 Redis를 활용한 Resfresh Token 구현 기존 Access Token 방식의 문제점 JWT를 기반으로 유효한 사용자가 로그인을 하면 토큰을 내려주고 권한이 필요한 접근에 대해서 header에 토큰을 포함해서 동작을 할 수 있다. 여기서 토큰은 세션과 다르게 stateless하다. == 서버가 상태를 보관하지 않는다. 따라서 한 번 발급한 토큰이 탈취되어도 서버에서는 토큰 만료시까지 기다리는 것 말고는 별다른 조치를 할 수가 없다. - Refresh Token ? ) 똑같은 JWT 지만 재발급에 관여하는 토큰. (Access Token은 접근에 관여하는 토큰) Refresh Token은 기존에 클라이언트가 가지고 있던 Access Token이 만료되었을 때 새로 발급받기 위해서 사용한다. Access Token에 비해 긴 유효시간을 가진다. Re.. 2023. 11. 26.
GiftFunding) Spring Security를 이용한 로그인 구현 Spring Security 는 서블릿 필터를 기반으로 동작하며 Dispatcher Servlet 앞에 필터가 배치되어있다. - Dispatcher Servlet 이란 ?) HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임하는 프론트 컨트롤러. Front Controller는 주로 서블릿 컨테이너의 제일 앞에서 서버로 들어오는 클라이언트의 모든 요청을 받아서 처리해주는 컨트롤러로써, MVC 구조에서 함께 사용되는 디자인 패턴이다. - FilterChain : 서블릿 컨테이너에서 관리하는 ApplicationFilterChain. client -> application 요청시 서블릿 컨테이너는 URI를 확인해 필터와 서블릿을 매핑. 스프링 시큐리티는 사용하고자 하는 필터체인을.. 2023. 11. 23.
728x90