亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

在springboot中使用注解將值注入?yún)?shù)的操作

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

后端的許多管理系統(tǒng)需要登陸者的信息,如shiro登陸后,會(huì)將登陸者的信息存儲(chǔ)在shiro的session,在使用時(shí)需要多行代碼獲取用戶信息。可以把獲取在shiro中的登陸者信息封裝在一個(gè)類中,使用時(shí)獲取。本文主要講述如何使用注解將值注入?yún)?shù),shiro的配置請(qǐng)自行百度。

定義注解

新建一個(gè)InfoAnnotation.java的注解類,用于注解參數(shù),代碼如下:

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

定義注解處理類

新建一個(gè)InfoResolver類,AOP無(wú)法將值注入?yún)?shù),需要繼承HandlerMethodArgumentResolver類,代碼如下:

public class InfoResolver implements HandlerMethodArgumentResolver { //使用自定義的注解 @Override public boolean supportsParameter(MethodParameter methodParameter) { return methodParameter.hasParameterAnnotation(InfoAnnotation.class); } //將值注入?yún)?shù) @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支持該攔截器

修改啟動(dòng)類,繼承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()); }}

測(cè)試

測(cè)試用例,如下代碼

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

登陸返回的信息

在springboot中使用注解將值注入?yún)?shù)的操作

調(diào)用測(cè)試用例返回的信息

在springboot中使用注解將值注入?yún)?shù)的操作

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

以上這篇在springboot中使用注解將值注入?yún)?shù)的操作就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 国产亚洲综合色就色 | 日日摸夜夜添夜夜添破第一 | 国产成人久久精品激情91 | 国产草草影院ccyycom软件 | 自拍偷拍 欧美日韩 | 国美女福利视频午夜精品 | 色婷婷久久 | 欧美色欧美亚洲另类二区精品 | 九九久久国产精品 | 日本巨乳中文字幕 | 久久毛片免费看一区二区三区 | 看黄色免费片 | 黄色免费网站网址 | 一级日本大片免费观看视频 | 国产91激情对白露脸全程 | 日韩精品中文字幕一区二区三区 | 国产又黄又爽又色视频影视网免费 | 亚洲成人第一页 | 免费能直接在线观看黄的视频 | 欧美激情在线播放第16页 | 美女黄污网站 | 成人国产在线不卡视频 | 日韩在线观看不卡 | 亚洲精品第一第二区 | 欧美高清免费精品国产自 | 国产美女一级高清免费观看 | 国产精品网站在线进入 | 美女黄18岁以下禁看 | 91污网站| www日韩免费高清视频 | 国产乱人伦精品一区二区 | 丁香色婷婷国产精品视频 | 国产黄在线观看免费观看不卡 | 最新大黄网站免费 | 日本性生活片 | 日韩精品一区二区三区小说 | 成人午夜大片免费视频77777 | 毛片网站大全 | 黄色一极毛片 | 夜夜夜爽bbbb性视频 | 麻豆精品视频在线观看 |