国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

在springboot中使用注解將值注入參數的操作

瀏覽:55日期:2023-05-21 13:47:41

后端的許多管理系統需要登陸者的信息,如shiro登陸后,會將登陸者的信息存儲在shiro的session,在使用時需要多行代碼獲取用戶信息。可以把獲取在shiro中的登陸者信息封裝在一個類中,使用時獲取。本文主要講述如何使用注解將值注入參數,shiro的配置請自行百度。

定義注解

新建一個InfoAnnotation.java的注解類,用于注解參數,代碼如下:

@Target(ElementType.PARAMETER)@Retention(RetentionPolicy.RUNTIME)public @interface InfoAnnotation { String value() default 'userId';//默認獲取userId的值}

定義注解處理類

新建一個InfoResolver類,AOP無法將值注入參數,需要繼承HandlerMethodArgumentResolver類,代碼如下:

public class InfoResolver implements HandlerMethodArgumentResolver { //使用自定義的注解 @Override public boolean supportsParameter(MethodParameter methodParameter) { return methodParameter.hasParameterAnnotation(InfoAnnotation.class); } //將值注入參數 @Override public Object resolveArgument(MethodParameter methodParameter, ModelAndViewContainer modelAndViewContainer, NativeWebRequest nativeWebRequest, WebDataBinderFactory webDataBinderFactory) throws Exception { //獲取捕獲到的注解 InfoAnnotation annotation = methodParameter.getParameterAnnotation(InfoAnnotation.class); String value = annotation.value(); //獲取需要注入值得邏輯 //該例子在shiro中獲取userId或者用戶信息 if (value == null || ''.equalsIgnoreCase(value) || value.equalsIgnoreCase('userId')){ User user = (User)SecurityUtils.getSubject().getSession().getAttribute('user'); if (user == null){ return 1; } return user.getId(); } else if ('user'.equalsIgnoreCase(value)){ return SecurityUtils.getSubject().getSession().getAttribute('user'); } return value; }}

使springboot支持該攔截器

修改啟動類,繼承WebMvcConfigurationSupport類,添加自定義得攔截器,代碼如下:

@SpringBootApplicationpublic class DemoApplication extends WebMvcConfigurationSupport { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } //添加自定義的攔截器 @Override public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers){ super.addArgumentResolvers(argumentResolvers); argumentResolvers.add(new InfoResolver()); }}

測試

測試用例,如下代碼

@GetMappingpublic BaseResponse<?> test(@InfoAnnotation int userId){ return ResponseUtil.successResponse(userId);}

登陸返回的信息

在springboot中使用注解將值注入參數的操作

調用測試用例返回的信息

在springboot中使用注解將值注入參數的操作

可以看到登陸返回的用戶信息的id和測試用例返回的data一致。

以上這篇在springboot中使用注解將值注入參數的操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
主站蜘蛛池模板: 99www综合久久爱com | 国产真实孩交 | 中文字幕亚洲区 | 三级黄色毛片网站 | 中国美女一级看片 | 久久久久久久久a免费 | 国产精品免费视频一区二区三区 | 特级片免费看 | 国产系列在线观看 | 日韩欧美一区二区三区不卡视频 | 精品真实国产乱文在线 | a级毛片毛片免费观看久潮喷 | 日本一级爽毛片在线看 | 亚洲日本欧美产综合在线 | 老色歌uuu26 老师张开腿让我爽了一夜视频 | 国产亚洲高清不卡在线观看 | 久久精品亚洲一级毛片 | 久久久久女人精品毛片九一 | 在线观看免费视频国产 | 日韩精品一区二区三区毛片 | 欧美第一精品 | 一级毛片不卡片免费观看 | 亚洲一区二区三区在线网站 | 日韩三及片 | 东京一区二区三区高清视频 | 国产高清精品久久久久久久 | 国产精品无码久久av | 国产精品久久久久毛片真精品 | 99精品视频在线观看免费播放 | 国产精品2020观看久久 | 成人精品一区二区www | 毛片免费在线播放 | 国产精品久久久久久搜索 | 波少野结衣在线播放 | 亚洲国产精品日韩在线观看 | 国产精品美女久久久久网站 | 精品久久久久久无码中文字幕 | 亚洲国产高清视频 | 欧美毛片a级毛片免费观 | 久久曰视频 | 综合久久一区二区三区 |