![](/img/trans.png)
[英]Custom annotation to get custom object with specified set of @RequestHeaders from HttpServletRequest
[英]creating custom annotation in spring mvc and getting httpservletrequest object
我想創建自定義注釋並使用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<String> mymethod (HttpServletRequest request)
{
///my code here....
}
}
我的 applicationContext.xml 文件被配置為自動組件掃描,但我的注釋類仍然沒有被調用。誰能告訴我我的錯誤。
您仍然需要在應用程序上下文中配置攔截器(盡管有自動掃描):
<bean id="checkSession" class="CheckSessionClass"/>
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
<property name="defaultHandler">
<ref bean="checkSession"/>
</property>
</bean>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.