hswork.win

Spring CustomViewResolver 사용하기

2021-12-06 · 개발

프로젝트 진행 중, View의 폴더를 분리하여 관리해야하는 경우가 발생하여 이 방법을 찾게 되었음

package egovframework.example.cmmn;

import java.util.Locale;
import org.springframework.core.Ordered;
import org.springframework.web.servlet.View;
import org.springframework.web.servlet.view.AbstractUrlBasedView;
import org.springframework.web.servlet.view.JstlView;
import org.springframework.web.servlet.view.UrlBasedViewResolver;

public class CustomViewResolver extends UrlBasedViewResolver implements Ordered {
	@Override
	protected View loadView(String viewName, Locale locale) throws Exception {
		// TODO Auto-generated method stub
		System.out.println("CustomViewResolver");
		System.out.println(viewName);

		AbstractUrlBasedView view = buildView(viewName);
		View viewObj = (View) getApplicationContext().getAutowireCapableBeanFactory().initializeBean(view, viewName);
		if (viewObj instanceof JstlView) {
			JstlView jv = (JstlView) viewObj;
			...
            return null;
		}

		return viewObj;
	}
}

먼저 커스텀 Class를 만들어준다

"..."에 원하는 조건식으로 분리시켜놓는다.

여기서 Null 값을 리턴하게 되면 2번째 Resolver 로 적용되는 방식이다.

 	 <bean class="egovframework.example.cmmn.CustomViewResolver"
 	 p:order="1" p:prefix="A" p:suffix=".jsp"
 	 p:viewClass="org.springframework.web.servlet.view.JstlView"/>

 	 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
 	 p:order="2" p:prefix="B" p:suffix=".jsp"/>

Null값이 안오면 order 1번의 설정값을 사용하게되고

Null값이 나오면 order 2번의 설정값을 사용하게 된다.

위 페이지를 참고하였다.

← 개발 기록 목록