最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

定義注解

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

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

定義注解處理類(lèi)

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

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或者用戶(hù)信息
 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)類(lèi),繼承WebMvcConfigurationSupport類(lèi),添加自定義得攔截器,代碼如下:

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

測(cè)試

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

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

登陸返回的信息

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

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

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

相關(guān)文章

  • Java IO流學(xué)習(xí)總結(jié)之文件傳輸基礎(chǔ)

    Java IO流學(xué)習(xí)總結(jié)之文件傳輸基礎(chǔ)

    這篇文章主要介紹了Java IO流學(xué)習(xí)總結(jié)之文件傳輸基礎(chǔ),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java io流的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-04-04
  • 多數(shù)據(jù)源如何實(shí)現(xiàn)事務(wù)管理

    多數(shù)據(jù)源如何實(shí)現(xiàn)事務(wù)管理

    Spring中涉及三個(gè)核心事務(wù)處理接口:PlatformTransactionManager、TransactionDefinition和TransactionStatus,PlatformTransactionManager提供事務(wù)操作的基本方法,如獲取事務(wù)、提交和回滾
    2024-09-09
  • Java模擬死鎖發(fā)生之演繹哲學(xué)家進(jìn)餐問(wèn)題案例詳解

    Java模擬死鎖發(fā)生之演繹哲學(xué)家進(jìn)餐問(wèn)題案例詳解

    這篇文章主要介紹了Java模擬死鎖發(fā)生之演繹哲學(xué)家進(jìn)餐問(wèn)題,結(jié)合具體演繹哲學(xué)家進(jìn)餐問(wèn)題的案例形式詳細(xì)分析了死鎖機(jī)制與原理,需要的朋友可以參考下
    2019-10-10
  • Mybatis批量插入返回成功的數(shù)目實(shí)例

    Mybatis批量插入返回成功的數(shù)目實(shí)例

    這篇文章主要介紹了Mybatis批量插入返回成功的數(shù)目實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • Java中關(guān)于二叉樹(shù)的概念以及搜索二叉樹(shù)詳解

    Java中關(guān)于二叉樹(shù)的概念以及搜索二叉樹(shù)詳解

    二叉樹(shù)是一種很有用的非線(xiàn)性結(jié)構(gòu),日常的開(kāi)發(fā)中常會(huì)用到,關(guān)于二叉樹(shù)的概念以及搜索二叉樹(shù)本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Java httpClient連接池支持多線(xiàn)程高并發(fā)的實(shí)現(xiàn)

    Java httpClient連接池支持多線(xiàn)程高并發(fā)的實(shí)現(xiàn)

    本文主要介紹了Java httpClient連接池支持多線(xiàn)程高并發(fā)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Spring Boot之AOP配自定義注解的最佳實(shí)踐過(guò)程

    Spring Boot之AOP配自定義注解的最佳實(shí)踐過(guò)程

    這篇文章主要給大家介紹了關(guān)于Spring Boot之AOP配自定義注解的最佳實(shí)踐過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • 詳解Java8新特性如何防止空指針異常

    詳解Java8新特性如何防止空指針異常

    要說(shuō) Java 編程中哪個(gè)異常是你印象最深刻的,那 NullPointerException 空指針可以說(shuō)是臭名昭著的,不要說(shuō)初級(jí)程序員會(huì)碰到, 即使是中級(jí),專(zhuān)家級(jí)程序員稍不留神,就會(huì)掉入這個(gè)坑里,本文就和大家聊聊Java8新特性如何防止空指針異常
    2023-08-08
  • Java代理模式實(shí)例分析

    Java代理模式實(shí)例分析

    這篇文章主要介紹了Java代理模式,結(jié)合實(shí)例形式對(duì)比分析了java代理模式的使用方法與相關(guān)操作技巧,需要的朋友可以參考下
    2019-07-07
  • Spring Security 安全框架應(yīng)用原理解析

    Spring Security 安全框架應(yīng)用原理解析

    這篇文章主要介紹了Spring Security 安全框架應(yīng)用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-07-07

最新評(píng)論

南漳县| 开江县| 囊谦县| 广丰县| 会昌县| 交城县| 平泉县| 大关县| 黄陵县| 淳安县| 凌云县| 璧山县| 重庆市| 阿合奇县| 滕州市| 浦城县| 沧源| 泸定县| 临朐县| 广南县| 凌海市| 鄂州市| 祁连县| 大田县| 富平县| 德昌县| 嘉峪关市| 马山县| 治县。| 电白县| 中阳县| 清涧县| 如东县| 莎车县| 平罗县| 延吉市| 那曲县| 迁安市| 饶河县| 建昌县| 马尔康县|