Springにおける責任連鎖の動的設定方法について教えてください。
Springでは、HandlerInterceptorインターフェイスを使用して責任連鎖を動的に構成できます。
動的な責務連鎖を設定するには、以下の手順を実行する必要があります
- ハンドラインターセプター
- プレハンドル
- ポストハンドリング
- 完了後
- 前処理
- ハンドラインターセプタ
- パスのパターンを除外する
- ハンドラーインターセプター
このコードブロックをご覧ください。
public class MyHandlerInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 根据需求判断是否需要将请求转发给下一个处理器
if (shouldForward(request)) {
return true;
} else {
// 将请求转发给其他的处理器
RequestDispatcher dispatcher = request.getRequestDispatcher("/otherHandler");
dispatcher.forward(request, response);
return false;
}
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
// 在请求处理之后执行特定的操作
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
// 在请求完成之后执行特定的操作
}
private boolean shouldForward(HttpServletRequest request) {
// 根据需求判断是否需要将请求转发给其他的处理器
}
}
Springの設定ファイルで、MyHandlerInterceptorのBeanを設定し、それに対応するパス一致ルールを追加しました。
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.example.MyHandlerInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
上記のコンテクストでは、MyHandlerInterceptorがすべてのリクエストパスに適用されることを意味します。実際の必要性に応じてパス一致ルールを調整できます。