@ControllerAdvice
Spring 에서 공통 및 전역적으로 예외처리, ModelAttribute 등 핸들링 하기 위해
@ControllerAdvice 어노테이션을 사용할 수 있다.
본인은 공통적으로 사용하는 변수값을 체크하여 특정 View 에 공통적으로 데이터를 넘겨야 할 상황이 있었다.
그래서 @ControllerAdvice 를 사용했다.
@ControllerAdvice 와 @ModelAttribute 어노테이션을 사용하여 요청 별로 각 Pakcage 경로마다
공통 속성을 추가해야 할 상황에 적절하다.
아래와 같이 CommonControllerAdvice 라는 클래스를 생성한다.
package com.youth.market.system.handler;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ModelAttribute;
@ControllerAdvice(basePackages = {"com.youth.market.controller.common"})
public class CommonControllerAdvice {
@ModelAttribute("isModelTest")
public String addTest(HttpServletRequest request) {
return "test";
}
}
@ControllerAdvice(basePackages = {"com.youth.market.controller.common"})
위와 같이 @ControllerAdvice 의 basePakcages 속성을 통해 공통적으로 값을 넘길 클래스들의 Pakcage 경로를
설정할 수 있다.
아래는 ControllerAdvice 어노테이션 인터페이스이다.
@ModelAttribute("isModelTest")
public String addTest(HttpServletRequest request) {
return "test";
}
@ModelAttribute 를 통해 설정한 basePakcages 에 공통 데이터를 전달할 수 있다.
isModelTest 라는 변수 이름으로 test 라는 String 문자열이 공통으로 전달된다.
결과
본인은 Thymeleaf 템플릿 엔진을 사용했으므로 /*[[${isModelTest}]]*/ ""; 형태이다.