Spring_SpringBoot (42) 썸네일형 리스트형 Filter, Interceptor Filter- Dispatcher Servlet에 요청이 전달되기 전/후에 url패턴에 맞는 모든 요청에 대해 부가작업을 할 수 있는 기능을 제공 하게 된다. 필터는 스프링 범위 밖에서 처리가 되는 것이다. 즉 스프링 컨테이너가 아닌 웹 컨테이너에 의해 관리가 되는 것이다. 아래의 그림을 보면 구조를 알 수 있다. ● 공통된 보안 및 인증/인가 관련 작업● 모든 요청에 대한 로깅 또는 감사● 이미지/데이터 압축 및 문자열 인코딩● Spring과 분리되어야 하는 기능 Interceptor- Spring이 제공하는 기술로써, 디스패처 서블릿(Dispatcher Servlet)이 컨트롤러를 호출하기 전과 후에 요청과 응답을 참조하거나 가공할 수 있는 기능을 제공한다. Interceptor은 주로 post.. [ System.out.println() ] VS [ logger.XXX ] 사이드 프로젝트를 진행하면서 log 설정하려고 하는데 막상 왜 System.out.println()을 쓰면 안되는지도 모르고기계적으로 진행하고 있었다. (1) 에러 추적 내용 존재 X휘발성의 특성을 지니고 있기 때문에 로그가 발생한 날짜, 시간, 로그 발 생 위치 등과 같은 최소한의 정보들을남기지 않는다. 따라서 문제를 해결하기 어려움이 있다. (2) 로그 레벨 사용 불가에러가 발생할 때 상황에 따른 문제에 대한 로그출력 레벨을 사용할 수 없다.→ INFO, WARN, ERROR...실제로 운영되는 프로젝트 내에서 동작하는 코드는 에러 혹은 장애가 발생할 때문제를 진단할 수 있는 정보만을 남겨야한다.모든 정보가 상세하게 같이 보여지게 된다면 민감한 정보를 로그로서 남겨질 수도 있고, 문제 해결을 위한 중.. @RequestMapping, @GetMapping, @PostMapping @RequestMapping으로 해도 되는데 왜 하는거야? Spring 4.3버전부터 Spring MVC 컨트롤 메소드를 위한 어노테이션 5개 추가됐다. - @PostMapping : CREATE → 데이터를 추가할 때 사용한다. - @GetMapping : READ → 데이터를 읽어올 때 사용한다. - @PutMapping : UPDATE → 정보를 통쨰로 변경할 때 사용한다. - @PatchMapping : UPDATE → 일부를 특정 방식으로 변경할 때 사용한다. - @DeleteMapping : DELETE → 데이터를 삭제할 때 사용한다.→ POST, PUT, PATCH에는 BODY라는 영역이 있어서 GET, DELETE보다 안전하게 감춰서 요청이 가능하다. 장점 : 코드의 명확성과 리펙토링기.. HTTP 서버 응답 코드(Response Code) 정리 이 글은 mybatis와 springboot를 연동하려고 할 때 304에러가 나면서 정리를 하면서 서버 응답 코드를 다 정리하는 것이다. 기본적인 틀은 다음과 같다. ● 1XX(정보) : Reqeust를 받고 있고, 처리 중에 있다.● 2XX(성공) : Request를 정상적으로 처리했다.● 3XX(Redirection) : 리퀘스트 완료를 위해 추가 동작이 필요하다.● 4XX(Client Error) : 클라이언트 요청을 처리할 수 없어 오류 발생● 5XX(Server Error) : 서버에서 처리를 하지 못하여 오류 발생 1) 200 번대 응답- 200(OK) : 요청 정상처리- 204(No Content) : 요청 정상 처리하였지만, 돌려줄 리소스가 없다.- 206(Partial Content) :.. @Service myBatis와 SpringBoot를 연결하는데 있어서 계속해서 Service에 대한 의존성을 주입했는데도 Service단에서 Service단을 찾기 못하였다. 결국 문제는 @Service 어노테이션은 실제 비즈니스 로직을 구현하는 클래스에 적용한다.→ ServiceImpl에 @Service Annotation처리 하니 해결됐다. 이 어노테이션은 Spring 프레임워크에서 해당 클래스를 서비스 컴포넌트로 인식하게 한다. ※ 꼬꼬무 SI나 SM하면서 Service와 ServiceImpl을 구분하는 경우가 있는데 실제로 Service의 경우는 Interface로 로직 자체는 없는데 왜 있는거지?→ Service의 경우 비즈니스 로직을 처리한다는 의미의 하나의 틀로써 관습적으로 작성하고 가시적으로 나누어져있는.. [ try-with-finall ] VS [ try-with-resource ] 오래된 공공 기관에서 일하다 보면 try-with-finally가 대부분 많다. 큰 문제점을 파악하지 못 했는데 왜 try-with-resource를 쓰라고 하는걸까? Java7 이전의 try-catch-finally사용 후에 반납해주어야 하는 자원들은 close를 호출하기 위해서 Null검사와 함께 직접 호출했어야 했다. → 이러한 점이 문제점을 야기한다. ● 자원 반납에 의해 코드가 복잡해짐● 실수로 자원을 반납하지 못하는 경우 발생한다.● 에러로 자원을 반납하지 못하는 경우 발생● 에러 스택 트레이스가 누락되어 디버깅이 어렵다. Java7 이후의 try-with-resourcejava는 이러한 문제점을 해결하고자 Java7부터 자원을 자동으로 반납해주는 try-catch-resources 문법을 추.. InvocationTargetException Mybatis를 설정하면서 에러가 나타났다. InvocationTargetException - InvocationTargetException은 method 호출시 호출한 메소드 내에서 Exception이 발생했을 때 해당 Exception을 Wrapping해주는 Exception 클래스이다. InvocationTargetException 자체의 stack trace만으로는 에러를 해결하기가 어렵다.→ 예외 try catch를 통해서 e.printstacktrace()하는 이유를 여기서 알았다. 결과적으로는 나의 DB가 연결이 안된 것이었다. ※ try catch를 보면서 try resource의 차이점이 궁금해졌다. 다음 글에 이어서 얘기해야겠다. 에러별 색상( 세팅 - 중요 ) 1. application.propertiesspring.output.ansi.enable = ALWAYS 이전 1 2 3 4 5 6 다음