예외처리

송용준·2025년 4월 15일
0

스프링으로 되어있다.

1. 오류 던짐

...
if (StringUtil.isNull(sInDataSet)) {
	//오류메세지 - [공통서비스] 입력 데이터셋 정보가 유효하지 않습니다.
	throw new BizException(-901, "err.admn.autosvc.indataset.invalid");
}
...

2. 오류 낚아챔 + MessageSource 주입

@ExceptionHandler(BizException.class)	 
	public Object handleBizException(HttpServletRequest request, Exception e) throws Exception {	
    
    @Autowired
    private MessageSource messageSource;  
    
	...
    strMsg = messageSource.getMessage(msgCode, args, Locale.getDefault());
    ...
    

3. Bean 등록 + MessageSource 구현

@Bean
	public ReloadableResourceBundleMessageSource messageSource() {
		ReloadableResourceBundleMessageSource reloadableResourceBundleMessageSource = new ReloadableResourceBundleMessageSource();
		String classpath = System.getProperty("java.class.path");
		reloadableResourceBundleMessageSource.setBasenames(
			"classpath:/egovframework/message/com/message-common",
			"classpath:/org/egovframe/rte/fdl/idgnr/messages/idgnr",
			"classpath:/org/egovframe/rte/fdl/property/messages/properties");
		reloadableResourceBundleMessageSource.setCacheSeconds(60);
		return reloadableResourceBundleMessageSource;
	}

설명

@ExceptionHandler 는 오류가 발생했을때 낚아챈다.

ReloadableResourceBundleMessageSource 라는 구현체를 @bean으로 등록해 놓고 MessageSource 에서 @autowired로 bean을 주입(의존성주입) 받는다.

결합도를 낮추고 유연하게 쓰자.

profile
용용

0개의 댓글