欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2020年04月26日 10:10:15   作者:一條獨立特行的咸魚  
這篇文章主要介紹了在springboot中使用注解將值注入?yún)?shù)的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

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

定義注解

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

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

定義注解處理類

新建一個InfoResolver類,AOP無法將值注入?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支持該攔截器

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

@SpringBootApplication
public 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());
 }
}

測試

測試用例,如下代碼

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

登陸返回的信息

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

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

以上這篇在springboot中使用注解將值注入?yún)?shù)的操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot中自動配置原理解析

    SpringBoot中自動配置原理解析

    SpringBoost是基于Spring框架開發(fā)出來的功能更強(qiáng)大的Java程序開發(fā)框架,本文將以廣角視覺來剖析SpringBoot自動配置的原理,涉及部分Spring、SpringBoot源碼,需要的可以參考下
    2023-11-11
  • 詳細(xì)談?wù)凧ava中l(wèi)ong和double的原子性

    詳細(xì)談?wù)凧ava中l(wèi)ong和double的原子性

    原子性是指一個操作或多個操作要么全部執(zhí)行,且執(zhí)行的過程不會被任何因素打斷,要么就都不執(zhí)行,下面這篇文章主要給大家介紹了關(guān)于Java中l(wèi)ong和double原子性的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • Java?GUI編程菜單組件實例詳解

    Java?GUI編程菜單組件實例詳解

    在實際開發(fā)中,除了主界面,還有一類比較重要的內(nèi)容就是菜單相關(guān)組件,可以通過菜單相關(guān)組件很方便的使用特定的功能,今天通過本文給大家介紹下Java?GUI編程菜單組件實例詳解,感興趣的朋友一起看看吧
    2022-04-04
  • Java過濾器doFilter里chain.doFilter()函數(shù)的理解

    Java過濾器doFilter里chain.doFilter()函數(shù)的理解

    這篇文章主要介紹了Java過濾器doFilter里chain.doFilter()函數(shù)的理解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • SpringCloud+Redis實現(xiàn)Api接口限流防止惡意刷接口

    SpringCloud+Redis實現(xiàn)Api接口限流防止惡意刷接口

    接口限流是為了保護(hù)系統(tǒng)和服務(wù),防止因為過多的請求而崩潰,本文主要介紹了SpringCloud+Redis實現(xiàn)Api接口限流防止惡意刷接口,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • springboot項目docker分層構(gòu)建的配置方式

    springboot項目docker分層構(gòu)建的配置方式

    在使用dockerfile構(gòu)建springboot項目時,速度較慢,用時比較長,為了加快構(gòu)建docker鏡像的速度,采用分層構(gòu)建的方式,這篇文章主要介紹了springboot項目docker分層構(gòu)建,需要的朋友可以參考下
    2024-03-03
  • 使用spring整合Quartz實現(xiàn)—定時器功能

    使用spring整合Quartz實現(xiàn)—定時器功能

    這篇文章主要介紹了使用spring整合Quartz實現(xiàn)—定時器功能,不基于特定的基類的方法,需要的朋友可以參考下
    2018-04-04
  • 詳解Elastic Search搜索引擎在SpringBoot中的實踐

    詳解Elastic Search搜索引擎在SpringBoot中的實踐

    本篇文章主要介紹了Elastic Search搜索引擎在SpringBoot中的實踐,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Spring基于XML實現(xiàn)Aop

    Spring基于XML實現(xiàn)Aop

    這篇文章主要介紹了Spring中基于xml的AOP的詳細(xì)步驟,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-07-07
  • java實現(xiàn)時鐘效果

    java實現(xiàn)時鐘效果

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)時鐘效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03

最新評論