真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

使用SpringAOP如何實(shí)現(xiàn)自定義注解

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)使用Spring AOP 如何實(shí)現(xiàn)自定義注解,文章內(nèi)容豐富且以專(zhuān)業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

目前創(chuàng)新互聯(lián)公司已為成百上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管網(wǎng)站托管運(yùn)營(yíng)、企業(yè)網(wǎng)站設(shè)計(jì)、府谷網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

1.在Maven中加入以下以依賴(lài):

 
     
      org.springframework 
      spring-aop 
      3.0.6.RELEASE 
     
     
      org.springframework 
      spring-aspects 
      3.0.6.RELEASE 
     
     
      org.aspectj 
      aspectjrt 
      1.6.11 
     
     
      org.aspectj 
      aspectjweaver 
      1.6.11 
     
     
      cglib 
      cglib 
      2.1_3 
     
     

在spring-***.xml中加入spring支持,打開(kāi)aop功能

頭文件聲明 :  

xmlns:aop="http://www.springframework.org/schema/aop"  
http://www.springframework.org/schema/aop  
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
   
   
     
   
   
 
  //或: 
   

編寫(xiě)自定義注解。實(shí)現(xiàn)對(duì)方法所實(shí)現(xiàn)的功能進(jìn)行描述,以便在通知中獲取描述信息

/* 
 * 校驗(yàn)簽名合法性 自定義事務(wù) 
 */ 
@Target({ElementType.METHOD}) 
@Retention(RetentionPolicy.RUNTIME) 
@Documented 
@Inherited 
public @interface SecureValid { 
  String desc() default "身份和安全驗(yàn)證開(kāi)始..."; 
} 

@Target 用于描述注解的使用范圍(即:被描述的注解可以用在什么地方),其取值有:

取值

描述

CONSTRUCTOR

用于描述構(gòu)造器。

FIELD

用于描述域。

LOCAL_VARIABLE

用于描述局部變量。

METHOD

用于描述方法。

PACKAGE

用于描述包。

PARAMETER

用于描述參數(shù)。

TYPE

用于描述類(lèi)或接口(甚至 enum )。

@Retention 用于描述注解的生命周期(即:被描述的注解在什么范圍內(nèi)有效),其取值有: 

取值

描述

SOURCE

在源文件中有效(即源文件保留)。

CLASS

在 class 文件中有效(即 class 保留)。

RUNTIME

在運(yùn)行時(shí)有效(即運(yùn)行時(shí)保留)。

@Documented 在默認(rèn)的情況下javadoc命令不會(huì)將我們的annotation生成再doc中去的,所以使用該標(biāo)記就是告訴jdk讓它也將annotation生成到doc中去

@Inherited 比如有一個(gè)類(lèi)A,在他上面有一個(gè)標(biāo)記annotation,那么A的子類(lèi)B是否不用再次標(biāo)記annotation就可以繼承得到呢,答案是肯定的

Annotation屬性值 有以下三種: 基本類(lèi)型、數(shù)組類(lèi)型、枚舉類(lèi)型

1:基本串類(lèi)型

public @interface UserdefinedAnnotation { 
  intvalue(); 
  String name(); 
  String address(); 
}

使用:

@UserdefinedAnnotation(value=123,name="wangwenjun",address="火星") 
  public static void main(String[] args) { 
    System.out.println("hello"); 
  } 
}

如果一個(gè)annotation中只有一個(gè)屬性名字叫value,我沒(méi)在使用的時(shí)候可以給出屬性名也可以省略。

public @interface UserdefinedAnnotation { 
  int value(); 
} 

也可以寫(xiě)成如下的形式

@UserdefinedAnnotation(123) 等同于@UserdefinedAnnotation(value=123) 
  public static void main(String[] args) { 
    System.out.println("hello"); 
} 

2:數(shù)組類(lèi)型 我們?cè)谧远xannotation中定義一個(gè)數(shù)組類(lèi)型的屬性,代碼如下:

public @interface UserdefinedAnnotation { 
  int[] value(); 
} 

使用: 

public class UseAnnotation { 
   
  @UserdefinedAnnotation({123}) 
  public static void main(String[] args) { 
    System.out.println("hello"); 
  } 
}

注意1:其中123外面的大括號(hào)是可以被省略的,因?yàn)橹挥幸粋€(gè)元素,如果里面有一個(gè)以上的元素的話,花括號(hào)是不能被省略的哦。比如{123,234}。

注意2:其中屬性名value我們?cè)谑褂玫臅r(shí)候進(jìn)行了省略,那是因?yàn)樗衯alue,如果是其他名字我們就不可以進(jìn)行省略了必須是@UserdefinedAnnotation(屬性名={123,234})這樣的格式。

3:枚舉類(lèi)型

public enum DateEnum { 
  Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday 
} 

然后在定義一個(gè)annotation 

package com.wangwenjun.annatation.userdefined; 
 
public @interface UserdefinedAnnotation { 
  DateEnum week(); 
} 

使用:

public class UseAnnotation { 
  @UserdefinedAnnotation(week=DateEnum.Sunday) 
  public static void main(String[] args) { 
    System.out.println("hello"); 
  } 
} 

4:默認(rèn)值

public @interface UserdefinedAnnotation { 
  String name() default "zhangsan"; 
}

使用: 

public class UseAnnotation { 
  @UserdefinedAnnotation() 
  public static void main(String[] args) { 
    System.out.println("hello"); 
  } 
} 

5:注意

Annotation是不可以繼承其他接口的,這一點(diǎn)是需要進(jìn)行注意,這也是annotation的一個(gè)規(guī)定吧。

Annotation也是存在包結(jié)構(gòu)的,在使用的時(shí)候直接進(jìn)行導(dǎo)入即可。

Annotation類(lèi)型的類(lèi)型只支持原聲數(shù)據(jù)類(lèi)型,枚舉類(lèi)型和Class類(lèi)型的一維數(shù)組,其他的類(lèi)型或者用戶自定義的類(lèi)都是不可以作為annotation的類(lèi)型,我查看過(guò)文檔并且進(jìn)行過(guò)測(cè)試。

上述就是小編為大家分享的使用Spring AOP 如何實(shí)現(xiàn)自定義注解了,如果剛好有類(lèi)似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


新聞名稱(chēng):使用SpringAOP如何實(shí)現(xiàn)自定義注解
轉(zhuǎn)載源于:http://weahome.cn/article/jocijh.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部