Framework/Spring Boot 5

[Spring Boot] Spring AOP를 활용한 Logging

기본적으로 함수 시작 전, 종료 후, 에러 발생 후 시점을 기준으로 자동으로 로그를 생성하도록 Aspect를 만들어서 설정할 수 있습니다. execution() 안에서 로그를 자동으로 남길 범위를 정할 수 있습니다. 로깅이 필요하지 않은 함수들은 @NoLogging 어노테이션을 만들어서 처리할 수 있습니다. (민감 정보를 가지고 있거나 로깅이 필요하지 않는 함수 등) Advice 실행 시점 설명 @Before 함수 시작 전 함수가 속한 클래스 이름, 함수 이름, 함수로 들어온 파라미터(args) 등을 로그로 남깁니다. @AfterReturning 함수 시작 후 함수가 속한 클래스 이름, 함수 이름, 함수가 반환한 값(result) 등을 로그로 남깁니다. @AfterThrowing 에러 발생 후 함수가 속..

[Spring Boot] 자주 쓰이는 Spring Boot Annotation (Controller, Service, Model)

🚀 Controller Annotation Annotation 영역 Description @RestController Class Spring의 컴포넌트 스캔 대상이 되도록 하고 HTTP 요청과 응답을 자동으로 매핑되도록 하는 등 Spring에서 Controller로 동작할 수 있도록 기본적인 동작을 담고있는 어노테이션입니다. @Controller와 @RequestBody가 합쳐진 어노테이션으로 RESTful 웹 서비스에서 주로 사용됩니다. @RequiredArgsConstructor Class Spring 4.3부터는 @Autowired를 통한 의존성 주입보다 생성자를 통한 의존성 주입을 권장하고 있습니다. @RequiredArgsConstructor를 사용하면 생성자 코드를 따로 적지 않아도 됩니다. ..

[Spring Boot] @ExceptionHandler, @ControllerAdvice (Exception 공통 처리)

🚀 Exception 공통 처리 보통 예외는 3가지 방법으로 처리할 수 있다. 예외 복구 : 예외가 발생하면 예외 상황에 알맞게 처리하여 복구한다. (try, catch) 예외 회피 : 예외를 직접 처리하지 않고 예외를 상위 메소드에 위임한다. (throw) 예외 전환 : 예외를 위임하되 발생한 예외를 그대로 위임하는 것이 아닌 적절한 예외로 전환하여 위임한다. (restTemplate.doExecute) 이때 예외 복구에 대한 범위는 아래와 같다. 메소드 영역 : 메소드 영역은 종속된 복구 기능으로 단순히 try, catch 사용하면 된다. 클래스 영역 : 클래스 내 공통 예외 복구는 @ExceptionHandler를 사용하면 된다. 전역 영역 : 여러 클래스의 공통 예외 복구는 @ControllerA..

[Spring Boot] Filter, Interceptor, AOP 차이 및 정리

Spring Boot를 사용하면 애플리케이션의 공통 기능을 개발하고 관리하는데 매우 효과적인 다양한 기능을 제공한다. 예를들어 로그인 관련 (세션 체크) 처리, 권한 체크, XSS(Cross Site Script) 방어, PC와 모바일웹의 분기처리, 로그, 페이지 인코딩 변황 등이 있다. 이러한 기능 중에는 Filter, Interceptor, Aspect-Oriented Programming (AOP) 등이 있다. 각각의 기능은 애플리케이션의 요청 처리 과정에서 앞, 중간, 뒤에 추가하여 특정한 작업을 수행하도록 해주며, 코드의 재사용성과 모듈성을 높여준다. (모든 페이지마다 공통 업무에 관련된 코드를 작성하면 중복된 코드가 많아지고 서버에 부하를 줄 수도 있으며 소스 관리도 어렵다.) Intercep..

[Spring Boot] 정적 파일 로드 시 URL에 Jsessionid 붙는 경우 해결

프로젝트에서 배포된 QA 환경의 로그인 화면이 최초 로딩 시에 화면 깨짐 현상이 발생했다. 새로고침이나 재접속할 경우에는 정상적으로 로딩이 되는 이상한 현상이 지속됐다. 1. 원인 파악 😵 처음에는 css의 경로가 문제라 판단되어 절대경로로도 바꾸고 '/'을 붙여도 보며 시도해보았으나 현상은 동일했다. 한 시간동안 삽질한 끝에 원인을 파악했는데, 개발자 도구 (F12)로 HTML의 Element를 보니 URL 뒤에 jsessionid가 붙어있었다!! 이는 Tomcat 서버에서 Spring Framework에서 태그를 사용할 경우 최초 호출시 URL에 Jsessionid가 붙여지는 현상 때문이였다. 이는 버그가 아닌 의도적으로 설계된 것이다. (Tymeleaf 템플릿 엔진을 사용중이였다) 그럼 왜 이렇게 ..

반응형