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

SpringAop攔截參數(shù)帶注解的方法

 更新時(shí)間:2024年12月20日 11:37:00   作者:假女吖?  
這篇文章主要介紹了SpringAop攔截參數(shù)帶注解的方法,本文給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧

SpringAop攔截參數(shù)帶注解的方法

攔截方法中參數(shù)類型為String 且?guī)в?code>@Crypto注解的方法:execution(* *(..,@Crypto (String),..))

攔截方法中參數(shù)上帶有@Crypto注解的方法:execution(* *(..,@Crypto (*),..))

  • ..:零個(gè)或者多個(gè)
  • *:通配符

樣例

/**
 * 針對(duì)帶有@Crypto注解的參數(shù)進(jìn)行加密
 * @param joinPoint
 * @return
 * @throws Throwable
 */
@Around(value = "execution(* *(..,@Crypto (String),..))")
public Object encrypt(ProceedingJoinPoint joinPoint){}

擴(kuò)展:Spring常見(jiàn)三種注入方式

Spring常見(jiàn)三種注入方式

1、field注入(字段注入)

@Controller
public class FooController {
   @Autowired
   private FooService fooService;
   //簡(jiǎn)單的使用例子,下同
   public List<Foo> listFoo() {
       return fooService.list();
   }
}

最常見(jiàn)的注入方式、注入方式簡(jiǎn)單明了,類中定義全局變量,可以使用@Autowired、@Resource、@Inject注解來(lái)實(shí)現(xiàn)

2、構(gòu)造器注入

@Controller
public class FooController {
   private final FooService fooService;
   public FooController(FooService fooService) {
       this.fooService = fooService;
   }
   //使用方式上同
   public List<Foo> listFoo() {
       return fooService.list();
   }
}

定義final類型變量,并定義一個(gè)帶有帶變量的構(gòu)造函數(shù),在構(gòu)造函數(shù)初始化該變量,變量不能是static類型。Spring4.x版本中推薦的注入方式。如果在需要注入的變量很多的情況下,構(gòu)造很熟會(huì)很大很影響代碼美觀,所以推薦lombok的注解@RequiredArgsConstructor,該注解作用于類上,可以給當(dāng)前生成一個(gè)構(gòu)造函數(shù),該構(gòu)造函數(shù)的參數(shù)為當(dāng)前類中被@NotNull注解修飾的變量和final類型的變量。

 3、setter注入

@Controller
 public class FooController {
   private FooService fooService;
   @Autowired
   public void setFooService(FooService fooService) {
       this.fooService = fooService;
  }
  //使用方式上同
  public List<Foo> listFoo() {
      return fooService.list();
  }
 }

定義一個(gè)變量,并實(shí)現(xiàn)該變量的set方法,set方法需要加上注解@Autowired,Spring3.x剛推出的時(shí)候,推薦使用注入的就是這種。改注解的優(yōu)點(diǎn)就是可以在類使用之后重新配置或者重新注入。

構(gòu)造器注入的好處:

構(gòu)造器注入是Spring4.x版本中推薦的注入方式,Spring官方對(duì)此也有解釋,翻譯過(guò)來(lái)就是構(gòu)造器注入的方式啊,能夠保證注入的**依賴不可變**,并且確保需要的**依賴不為空**。此外,構(gòu)造器注入的依賴總是能夠在返回客戶端(組件)代碼的時(shí)候保證**完全初始化的狀態(tài)**。

1、依賴不可變:就是變量上final關(guān)鍵字的作用。

2、依賴不為空:因?yàn)槭峭ㄟ^(guò)構(gòu)造函數(shù)注入的,Spring容器在實(shí)例化的時(shí)候會(huì)調(diào)用構(gòu)造函數(shù)傳入具體值。

3、完全初始化的狀態(tài):這個(gè)可以跟上面的依賴不為空結(jié)合起來(lái),向構(gòu)造器傳參之前,要確保注入的內(nèi)容不為空,那么肯定要調(diào)用依賴組件的構(gòu)造方法完成實(shí)例化。而在Java類加載實(shí)例化的過(guò)程中,構(gòu)造方法是最后一步(之前如果有父類先初始化父類,然后自己的成員變量,最后才是構(gòu)造方法)。所以返回來(lái)的都是初始化之后的狀態(tài)。

field注入的缺點(diǎn):

1、對(duì)于IOC容器之外的環(huán)境,會(huì)報(bào)錯(cuò)NPE

 FooController fooController = new FooController();
 fooController.listFoo(); //NullPointerException

2、在循環(huán)依賴的場(chǎng)景下,構(gòu)造器注入在項(xiàng)目啟動(dòng)啟動(dòng)時(shí)會(huì)報(bào)錯(cuò)、而field注入的方式啟動(dòng)時(shí)不會(huì)報(bào)錯(cuò),在使用具體的對(duì)象時(shí)才會(huì)報(bào)錯(cuò)

另外,在一個(gè)依賴的接口有多個(gè)實(shí)現(xiàn)類時(shí),推薦使用field注入或者setter注入的方式來(lái)指定注入類型。

到此這篇關(guān)于SpringAop攔截參數(shù)帶注解的方法的文章就介紹到這了,更多相關(guān)SpringAop攔截參數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java GZip 基于磁盤實(shí)現(xiàn)壓縮和解壓的方法

    Java GZip 基于磁盤實(shí)現(xiàn)壓縮和解壓的方法

    這篇文章主要介紹了Java GZip 基于磁盤實(shí)現(xiàn)壓縮和解壓,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考需要的朋友可以參考下
    2020-08-08
  • java項(xiàng)目如何引入其他jar包

    java項(xiàng)目如何引入其他jar包

    通常在lib文件夾中存放從外部引入的jar包,所以把JAR文件復(fù)制進(jìn)去。 然后修改編譯腳本,不需要去編譯tool文件夾里面的java類,直接把jar包添加到classpath,下文將詳細(xì)介紹
    2021-10-10
  • 深入理解Java虛擬機(jī) JVM 內(nèi)存結(jié)構(gòu)

    深入理解Java虛擬機(jī) JVM 內(nèi)存結(jié)構(gòu)

    本節(jié)將會(huì)介紹一下JVM的內(nèi)存結(jié)構(gòu),JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)的各個(gè)組成部分:堆,方法區(qū),程序計(jì)數(shù)器,Java虛擬機(jī)棧,本地方法棧,還會(huì)對(duì)Java堆的分代劃分做個(gè)簡(jiǎn)單的介紹
    2021-09-09
  • java運(yùn)行windows的cmd命令簡(jiǎn)單代碼

    java運(yùn)行windows的cmd命令簡(jiǎn)單代碼

    這篇文章主要介紹了java運(yùn)行windows的cmd命令簡(jiǎn)單代碼,有需要的朋友可以參考一下
    2013-12-12
  • JDK  keytool證書(shū)工具功能代碼解析

    JDK keytool證書(shū)工具功能代碼解析

    這篇文章主要介紹了JDK keytool證書(shū)工具功能代碼解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Java安全-ClassLoader

    Java安全-ClassLoader

    這篇文章主要介紹了Java安全ClassLoader,Java類初始化的時(shí)候會(huì)調(diào)用java.lang.ClassLoader加載字節(jié)碼,ClassLoader就是用來(lái)動(dòng)態(tài)加載class文件到內(nèi)存當(dāng)中用的,下面詳細(xì)內(nèi)容,需要的小伙伴可以參考一下
    2022-01-01
  • 詳解Java的文件與目錄管理以及輸入輸出相關(guān)操作

    詳解Java的文件與目錄管理以及輸入輸出相關(guān)操作

    這篇文章主要介紹了詳解Java的文件與目錄管理以及輸入輸出相關(guān)操作,是Java入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-09-09
  • mybatis-plus 版本不兼容問(wèn)題的解決

    mybatis-plus 版本不兼容問(wèn)題的解決

    這篇文章主要介紹了mybatis-plus 版本不兼容問(wèn)題的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Spring Mybatis 基本使用過(guò)程(推薦)

    Spring Mybatis 基本使用過(guò)程(推薦)

    Mybatis是一個(gè)半自動(dòng)ORM(Object Relational Mapping)框架,它可以簡(jiǎn)化數(shù)據(jù)庫(kù)編程,讓開(kāi)發(fā)者更專注于SQL本身,本文給大家介紹Spring Mybatis 基本使用過(guò)程,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • logback使用MDCFilter日志過(guò)濾源碼解讀

    logback使用MDCFilter日志過(guò)濾源碼解讀

    這篇文章主要介紹了logback使用MDCFilter日志過(guò)濾源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11

最新評(píng)論

抚松县| 苍南县| 曲阜市| 澜沧| 分宜县| 南漳县| 牙克石市| 津市市| 巩留县| 新绛县| 通州市| 分宜县| 莱阳市| 安远县| 沙河市| 呼玛县| 南安市| 建德市| 贵阳市| 庄河市| 项城市| 云和县| 娄烦县| 鄂州市| 河津市| 金溪县| 靖宇县| 湖北省| 观塘区| 安义县| 伽师县| 大悟县| 年辖:市辖区| 彭阳县| 锡林郭勒盟| 天全县| 乃东县| 丰顺县| 登封市| 吴江市| 固镇县|