Notice
Recent Posts
Recent Comments
Link
개발 무지렁이
[Spring] 예외처리 @ExceptionHandler와 국한되지 않는 예외처리 SimpleMappingExceptionResolver 본문
Backend/스프링
[Spring] 예외처리 @ExceptionHandler와 국한되지 않는 예외처리 SimpleMappingExceptionResolver
Gaejirang-e 2023. 5. 5. 18:34
예외처리 annotation, @ExceptionHandler
(특정 컨트롤러에만 국한된다.)
@Controller
public class ExceptionController {
private static final Logger logger = LoggerFactory.getLogger(ExceptionController.class);
@RequestMapping("/exception.do")
public ModelAndView ex(String no) {
logger.info("no: " + no);
int converNo = Integer.parseInt(no);
int result = 100 / convertNo; // ArithmeticException
logger.info("exception.do 요청됨.. converNo: " + converNo);
return new ModelAndView("exResult", "message", "예외실습결과입니다.");
}
/**
* 현재 컨트롤러를 실행했을 때, 발생하는 예외처리
* */
@ExceptionHandler(value = {ArithmeticException.class})
public ModelAndView error(Exceptioin e) {
logger.info("예외가 발생했어요");
ModelAndView mv = new ModelAndView();
mv.setViewName("error/errorMessage");
mv.addObject("errMsg", "예외가 발생했습니다."); // ${errMsg}
mv.addObject("errClass", e.getMessage());
return mv;
}
}
📌. log4j
: file이나 console창에 흐름을 로그로 기록
: file이나 console창에 흐름을 로그로 기록
<!-- Application Loggers -->
<logger name="web.mvc.controller">
<level value="info" />
</logger>
특정 컨트롤러에만 국한되지 않도록, SimpleMappingExceptionResolver
[servlet-context.xml]
<annotation-driven />
<context:component-scan base-package="web.mvc.controller" />
<beans:bean
class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<beans:property name="exceptionMappings">
<beans:props>
<beans:prop key="java.lang.ArithmeticException">
error/number
</beans:prop>
</beans:props>
</beans:property>
</beans:bean>
예외처리 설정을 JavaBase기반으로 생성, @annotation
(실체를 가지고 있지 않기 때문에)
[AppConfig.java]
// @Component
// class SimpleMappingExceptionResolver {
// 실체를 가지고 있지 않다.
// }
@Configuration
class AppConfig {
@Bean // method 위에 선언
public SimpleMappingExceptionResolver aa() {
return new SimpleMappingExceptionResolver();
}
}
📌. @Configuration // 환경설정을 돕는 클래스
: 이 어노테이션 안에서 @Bean을 찾아 메모리에 올려준다.
: 이 어노테이션 안에서 @Bean을 찾아 메모리에 올려준다.
'Backend > 스프링' 카테고리의 다른 글
[Spring] 파라미터를 받는 @RequestParam과 @PathVariable (0) | 2023.05.05 |
---|---|
[Spring] 파일 업로드와 파일 다운로드 설정 및 기능구현 (0) | 2023.05.05 |
[Spring] 어노테이션(annotation)과 파라미터(parameter), 리턴(return) (0) | 2023.05.05 |
[Spring] front Controller: DispatcherServlet(in web.xml)과 Spring MVC bean(in SPRING BEAN 설정문서.xml) (0) | 2023.05.02 |
[Spring] 관점지향프로그래밍 AOP와 Advice, 프록시 서버(Proxy Server) (0) | 2023.05.01 |