Spring CustomViewResolver 사용하기
프로젝트 진행 중, 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번의 설정값을 사용하게 된다.
위 페이지를 참고하였다.