새소식

Java/Spring

@ControllerAdvice

  • -
728x90
반응형

@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}]]*/ ""; 형태이다.

728x90
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.