본문 바로가기
반응형

스프링23

redis 사용 일간, 주간 월간 조회수 구현 프로젝트 도중 일간, 조회수, 주간 조회수, 월간 조회수를 를 구현하고자 했습니다. 게시글을 누를때마다 post에 칼럼인 view카운트를 늘려주고 Views 테이블에 postid와 userid,게시글 클릭 한 시간 을 담으려고 했었는데 그렇게 되면 어뷰징과, 게시글 누를때마다 실시간으로 Insert 문이 발생돼서 효율적이지 않다고 생각돼 레디스에 Useremail 이 key이고 value가 유저가 그 날 하루에 조회한 postid가 담기게 했습니다 예를들어 song@naver.com으로 로그인해서 1,3,5,7,9,10 번을 조회하면 레디스에는 song@naver.com : 1_3_5_7_9_10 으로 구분자 _ 를 기준으로 해서 들어가게 했습니다. 24시가되면 스케쥴러가 돌면서 Views테이블로 각 게.. 2024. 2. 25.
스프링 비속어 필터링 인터셉터 얼마전 포스팅을 할 때 비속어를 사용하면 * 표시로 바꾸게 개발을 해 보았습니다. service 단에서 처리하는것 보다 인터셉터로 구현하는게 더 효율적이라 생각하여 Intercepter를 사용했습니다. 만약 "시발" 이 들어오면 ** 으로 출력되고, "시1발" 등 구분자를 사용햇을때도 ** 로 표시되게 했습니다. 1.BadWords interface BadWords { String[] koreaWord1 = { "씨발", "병신", "ㅅㅂ", "ㅂㅅ", "닥쳐", "새끼", "시발", "개시발", "개씨발", "년", "년아", "개같은", "애미", "애비","naver","daum","google","com","net", "네이버","다음","구글" }; } 나쁜 단어들 담은 인터페이스를 선언 해 주.. 2024. 2. 9.
공통에러 처리, RestFull 에서 ResponseEntity , @RestControllerAdvice 스프링 프로젝트를 진행하다보면 중복된 에러 잡는 코드가 많아진다. 이러한 코드를 서비스단, 혹은 컨트롤 단에서 다 잡아주게되면 코드가 많아져 나중에 가독성이 떨어질 수 있다. 보통 Restfull 하다라는 것은 Rest API 의 원칙을 잘 지킨다는 말인데. URI만 보더라도 리소스를 명확하게 인식 할 수 있도록 표현 한 설계 방식을 의미한다 . 그래서 FrontEnd 와 협업시에 상태코드와, 성공여부, 데이터 만 보내주면, Front에서 그것 만 보고 코드를 짤 수 있게 만들어 줘야한다. ResponseEntity 안에는 HTTP 상태코드, 응답헤더 ,응답 본문 등 이 들어간다. 바로 예시를 들어서 해보겠다. 회원가입으로 예를 들어보면 @PostMapping("/member/create") public.. 2024. 2. 4.
AOP 포인트 컷 @Pointcut AOP 란 관점 지향 프로그래밍 이라고 불린다. 서비스들의 비즈니스 메소드들은 복잡한 코드로 구성되어있다. 이럴때 비핵심적이지만 꼭 필요하면서, 공통화 할 수 있는 부분을 빼서 따로 관리하는것이다. Request가 들어오고 Controller 까지의 동작방식은 다음과 같다 @Joinpoint 후보들 이라고 생각하면 된다. 나는 게시판 으로 예시를 들어보겠다. Controller에 있는 모든 메서드 들에게 후보군으로 설정하겠다. 방식은 2가지로 나눌 수 있다. 1. 어노테이션 방법 : 보통 이방식을 많이 사용한다. @Pointcut("within(@org.springframework.stereotype.Controller *)") public void controllerPointcut() { } Contr.. 2024. 2. 4.
log 관리 logback설정 로그의 종류에는 log.debug("OK1"); log.info("OK2"); log.error("OK3"); debug, info, error 이렇게 3가지 종류가 있다. application.yml 에서 로그 설정하는법은 밑에와 같다. logging: file: name: logs/app.log level: root: info logs/app.log 파일로 저장하게 하고 level : root: info로 info 이상만 로그에 찎히게 한다. debug > info > error 순서이므로 위 상황에선 info와 error만 나온다. 하지만 모든성공로그와, 실패로그가 똑같은 곳에 나오게된다. 그래서 날짜별로 성공로그와, 실패로그를 따로 관리하기 위해 설정을 해보도록 하겠다. 전체적인 코드는 이렇다. .. 2024. 2. 4.
반응형