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

Spring AOP 自定義注解的實現(xiàn)代碼

 更新時間:2017年04月21日 11:47:51   作者:changliangwl  
本篇文章主要介紹了Spring AOP 自定義注解的實現(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

1.在Maven中加入以下以依賴:

<!-- Spring AOP + AspectJ by shipengzhi --> 
    <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-aop</artifactId> 
      <version>3.0.6.RELEASE</version> 
    </dependency> 
    <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-aspects</artifactId> 
      <version>3.0.6.RELEASE</version> 
    </dependency> 
    <dependency> 
      <groupId>org.aspectj</groupId> 
      <artifactId>aspectjrt</artifactId> 
      <version>1.6.11</version> 
    </dependency> 
    <dependency> 
      <groupId>org.aspectj</groupId> 
      <artifactId>aspectjweaver</artifactId> 
      <version>1.6.11</version> 
    </dependency> 
    <dependency> 
      <groupId>cglib</groupId> 
      <artifactId>cglib</artifactId> 
      <version>2.1_3</version> 
    </dependency> 
    <!-- end --> 

在spring-***.xml中加入spring支持,打開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 
  <!-- 自定義AOP --> 
  <aop:aspectj-autoproxy proxy-target-class="true"> 
    <aop:include name="controllerAspect" /> 
  </aop:aspectj-autoproxy> 
  <bean id="controllerAspect" class="com.sogou.upd.passport.common.aspect.ControllerAspect"></bean> 
 
  //或: 
  <aop:aspectj-autoproxy> 

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

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

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

取值

描述

CONSTRUCTOR

用于描述構造器。

FIELD

用于描述域。

LOCAL_VARIABLE

用于描述局部變量。

METHOD

用于描述方法。

PACKAGE

用于描述包。

PARAMETER

用于描述參數(shù)。

TYPE

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

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

取值

描述

SOURCE

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

CLASS

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

RUNTIME

在運行時有效(即運行時保留)。

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

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

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

1:基本串類型

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

使用:

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

如果一個annotation中只有一個屬性名字叫value,我沒在使用的時候可以給出屬性名也可以省略。

public @interface UserdefinedAnnotation { 
  int value(); 
} 

也可以寫成如下的形式

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

2:數(shù)組類型 我們在自定義annotation中定義一個數(shù)組類型的屬性,代碼如下:

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

使用: 

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

注意1:其中123外面的大括號是可以被省略的,因為只有一個元素,如果里面有一個以上的元素的話,花括號是不能被省略的哦。比如{123,234}。

注意2:其中屬性名value我們在使用的時候進行了省略,那是因為他叫value,如果是其他名字我們就不可以進行省略了必須是@UserdefinedAnnotation(屬性名={123,234})這樣的格式。

3:枚舉類型

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

然后在定義一個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:默認值

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

使用: 

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

5:注意

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

Annotation也是存在包結構的,在使用的時候直接進行導入即可。

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

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Java實戰(zhàn)之電影在線觀看系統(tǒng)的實現(xiàn)

    Java實戰(zhàn)之電影在線觀看系統(tǒng)的實現(xiàn)

    這篇文章主要介紹了如何利用Java實現(xiàn)電影在線觀看系統(tǒng),文中用到的技術有:JSP、Spring、SpringMVC、MyBatis等,感興趣的可以了解一下
    2022-04-04
  • 詳解Java異常處理最佳實踐及陷阱防范

    詳解Java異常處理最佳實踐及陷阱防范

    這篇文章主要介紹了Java異常處理最佳實踐及陷阱防范,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • elasticsearch如何根據(jù)條件刪除數(shù)據(jù)

    elasticsearch如何根據(jù)條件刪除數(shù)據(jù)

    Elasticsearch是一個基于Apache Lucene?的開源搜索引擎,無論在開源還是專有領域,Lucene 可以被認為是迄今為止最先進、性能最好的、功能最全的搜索引擎庫,這篇文章主要介紹了elasticsearch如何根據(jù)條件刪除數(shù)據(jù),需要的朋友可以參考下
    2023-03-03
  • Java反射與Fastjson的危險反序列化詳解

    Java反射與Fastjson的危險反序列化詳解

    在?Java?中,Computer.class是一個引用,它表示了?Computer?的字節(jié)碼對象(Class對象),這個對象被廣泛應用于反射、序列化等操作中,那么為什么?parseObject?需要這個引用呢,帶著這個問題我們一起通過本文學習下吧
    2024-07-07
  • Spring注解之@PropertySource詳解

    Spring注解之@PropertySource詳解

    這篇文章主要介紹了Spring注解之@PropertySource詳解,@PropertySource注解用于指定資源文件讀取的位置,它不僅能讀取properties文件,也能讀取xml文件,并且通過YAML解析器,配合自定義PropertySourceFactory實現(xiàn)解析YAML文件,需要的朋友可以參考下
    2023-11-11
  • java??常見位邏輯運算符梳理

    java??常見位邏輯運算符梳理

    這篇文章主要介紹了java常見位邏輯運算符梳理,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參一下下面文章詳細內(nèi)容
    2022-08-08
  • Java基礎教程之組合(composition)

    Java基礎教程之組合(composition)

    這篇文章主要介紹了Java基礎教程之組合(composition),組合是在Java中實現(xiàn)程序復用(reusibility)的基本手段之一,需要的朋友可以參考下
    2014-08-08
  • 解決java字符串轉(zhuǎn)換成時間Unparseable date出錯的問題

    解決java字符串轉(zhuǎn)換成時間Unparseable date出錯的問題

    這篇文章主要介紹了解決java字符串轉(zhuǎn)換成時間Unparseable date出錯的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • IDEA新建bootstrap.yml文件不顯示葉子圖標的問題

    IDEA新建bootstrap.yml文件不顯示葉子圖標的問題

    這篇文章主要介紹了IDEA新建bootstrap.yml文件不顯示葉子圖標的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Mybatis報錯日志BindingException的解決

    Mybatis報錯日志BindingException的解決

    本文主要介紹了Mybatis報錯日志BindingException的解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07

最新評論