在 spring mvc 中创建自定义注解并获取 httpservletrequest 对象 [英] creating custom annotation in spring mvc and getting httpservletrequest object
本文介绍了在 spring mvc 中创建自定义注解并获取 httpservletrequest 对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想创建自定义注释并使用 HttpServletRequest
对象将该注释放在方法级别.到目前为止,我是这样做的:
I want to create custom annotation and put that annotation on method level using HttpServletRequest
object. so far I did this:
创建注释
@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;
}
}
创建了一个控制器来调用这样的注释.
created a controller to invoke annotation like this.
@Controller
public class MyController
{
@RequestMapping(method={RequestMethod.GET, RequestMethod.POST})
@CheckSession(isAuthenticate=true)
public ResponseEntity<String> mymethod (HttpServletRequest request)
{
///my code here....
}
}
我的 applicationContext.xml 文件被配置为自动组件扫描,但我的注释类仍然没有被调用.谁能告诉我我的错误.
My applicationContext.xml file is configured as auto component scan , but still my annotations class is not getting called.can anyone let me know my mistake.
推荐答案
您仍然需要在应用程序上下文中配置拦截器(尽管有自动扫描):
You still have to configure the interceptor in your application context (in spite of the auto-scan):
<bean id="checkSession" class="CheckSessionClass"/>
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
<property name="defaultHandler">
<ref bean="checkSession"/>
</property>
</bean>
这篇关于在 spring mvc 中创建自定义注解并获取 httpservletrequest 对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文