У меня есть Spring HandlerInterceptor, который перехватывает URL-адреса внешнего интерфейса в моем приложении (/ app / *). Я хочу определить, какой метод действия в обработчике должен быть вызван из HandlerInterceptor. Есть ли способ найти это, мне нужно ввести что-то в перехватчик, который может искать это на основе запрошенного пути?
Перехватчик выглядит так:
public class PageCacheInterceptor implements HandlerInterceptor {...}
Отображается так:
<mvc:interceptors>
<bean class="com.example.web.interceptors.PageCacheInterceptor" />
</mvc:interceptors>
Фон (потому что я знаю, что вы спросите!). Я добавляю простое кэширование страниц в свое приложение и хочу использовать аннотацию типа @Cacheable для каждого подходящего метода в контроллере. Затем перехватчик может определить, следует ли кэшировать ответ на основе действия, которое его создало.
Например:
@RequestMapping(value = "", method = RequestMethod.GET)
@Cacheable(events={Events.NEW_ORDER,Events.NEW_STAT})
public String home(Model model) {...}
События, которые приводят к тому, что кеш становится недействительным. Например, действие / widget / list приведет к тому, что его кэшированный ответ будет аннулирован новым сохраненным виджетом.
Редактировать: я обновился до последней версии Spring 3.1 M2, так как в этом сообщении в блоге намекает на нужные мне функции, но не ясно, потребуется ли внедрение этих новых классов или подклассов. Кто-нибудь использовал их, чтобы получить метод HandlerMethod в перехватчике?