본문 바로가기
반응형

Spring54

스프링 비속어 필터링 인터셉터 얼마전 포스팅을 할 때 비속어를 사용하면 * 표시로 바꾸게 개발을 해 보았습니다. 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.
Session을 받는 여러방법 중 가장 표준적인 방법 로그인에 성공을 했을시. 그 로그인 한 사람의 세션정보를 얻는 방법이 대표적으로 3가지가 있습니다. 3가지 모두 알아보고 가장 많이 쓰는 것을 알아보겠습니다. 1. Session attribute를 통한 접근 public String userInfoTeset(HttpServletRequest request) { String email1 = request.getSession().getAttribute("email").toString(); } 장점 : 직관적이며 간결합니다 단점 : 세션에 직접적으로 속성을 저장해야하므로 유지보수 측에서 관리가 어렵고,세션일 없는경우 Nullpointexeptcion 경우도 있습니다 2. session에서 Authentication 객체를 접근 SecurityContext s.. 2024. 2. 2.
[Spring]Redis + SpringBoot : 레디스 연동하기 (gradle, yml) 스프링부트 2.7.x  , gradlejava 11 기본 게시판을 만들던 중세션을 레디스에 띄어 놓기 위해서. 레디스와 스프링부트를 연결해 세션정보를 레디스에서 관리하도록 해보겠습니다. 레디스는 도커 를 사용 해보겠습니다.  1. docker ps - 현재 가동중인 도커를 보여줍니다. 레디스가 없으면2. docker run -d -p 6379:6379 redis - 레디스를 받아주시구요3. 다시 docker ps- 레디스에 containerID 가나옵니다.4. 레디스 실행docker exec -it f8bccab9b30c /bin/sh  를 해주면# 으로 바뀌어야 합니다.   도커를 확인해보면 이렇게 레디스가 돌아가고 있습니다. 포트는 6379 이고요 이제 스프링과 이어보도록하겠습니다.  0. build.. 2024. 2. 2.
반응형