Spring でインターセプターを使用しようとしています。すべてのコントローラーにインターセプターを実装して、呼び出されたときに特定のロジックを処理する必要があります。
web.xml:
<servlet>
<servlet-name>MyApp</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>MyApp</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
applicationContext.xml:
<bean id="handlerMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="interceptors">
<list>
<ref bean="warningInterceptor"/>
</list>
</property>
<property name="mappings">
<value>*.do</value>
</property>
</bean>
<bean id="warningInterceptor" class="security.WarningInterceptor">
<property name="activeApp" value="${myWarning}"/>
</bean>
Java クラス: WarningInterceptor
public class WarningInterceptor extends HandlerInterceptorAdapter {
private int activeApp;
public int getActiveApp() { return activeApp; }
public void setActiveApp(int activeApp) {this.activeApp = activeApp;}
public boolean preHandle(
HttpServletRequest request,
HttpServletResponse response,
Object handler) throws Exception {
if (getActiveApp() == 0) {
return true;
} else {
response.sendRedirect("/myWarning.do");
return false;
}
}
MyApp を起動すると、常に次のエラーが発生します。
org.springframework.beans.factory.BeanCreationException: ServletContext リソース [/WEB-INF/applicationContext.xml] で定義された 'handlerMapping' という名前の Bean の作成中にエラーが発生しました: Bean の初期化に失敗しました。ネストされた例外は org.springframework.beans.factory.NoSuchBeanDefinitionException: '' という名前の Bean が定義されていません