создание собственной аннотации весной mvc и получение объекта httpservletrequest
Я хочу создать пользовательскую аннотацию и поместить эту аннотацию на уровень метода, используяHttpServletRequest
объект. пока я сделал это:
Создана аннотация
@Target(value={ElementType.METHOD,ElementType.PARAMETER})
@Retention(value=RetentionPolicy.RUNTIME)
@Documented
@Inherited
@Mapping
public @interface CheckSession{
boolean isAuthenticate() default false;
}
созданный класс обработчика
@Component
public class CheckSessionClass implements HandlerMethodReturnValueHandler,HandlerMethodArgumentResolver {
@Override
public Object resolveArgument(MethodParameter arg0,
ModelAndViewContainer arg1, NativeWebRequest arg2,
WebDataBinderFactory arg3) throws Exception {
logger.info("......MY ANNOTATION CALLEDD.....resolveArgument");
return null;
}
@Override
public boolean supportsParameter(MethodParameter arg0) {
logger.info("......MY ANNOTATION CALLEDD.....supportsParameter");
return false;
}
@Override
public void handleReturnValue(Object retutnValue, MethodParameter returnType,
ModelAndViewContainer mavContainer, NativeWebRequest webRequest) throws Exception {
CheckSession annotation;
annotation=returnType.getMethodAnnotation(CheckSession.class);
if(annotation.isAuthenticate()){
logger.info("......got request is aurhenticated..true");
}else{
logger.info("......got request is aurhenticated..false");
}
}
@Override
public boolean supportsReturnType(MethodParameter arg0) {
logger.info("......MY ANNOTAION CALLEDD.....supportsReturnType");
return false;
}
}
создал контроллер для вызова аннотации, подобной этой.
@Controller
public class MyController
{
@RequestMapping(method={RequestMethod.GET, RequestMethod.POST})
@CheckSession(isAuthenticate=true)
public ResponseEntity mymethod (HttpServletRequest request)
{
///my code here....
}
}
Мой файл applicationContext.xml настроен как автоматическое сканирование компонентов, но мой класс аннотаций не вызывается. Может кто-нибудь сообщить мне мою ошибку.