注解匯總

java注解

一、標準注解

1、@Override 重寫函數(shù)
2、@Deprecated 不鼓勵使用(有更好的方式、使用有風險或已不再維護)
3、@SuppressWarnings 忽略某項Warning

二、元注解

1、@Target 表明注解鎖修飾的java元素類型,取值(ElementType)

2、@Retention 表示需要在什么級別保存該注釋信息,用于描述注解的生命周期(默認為CLASS),取值(RetentionPolicy)
RetentionPolicy.SOURCE: 注解的作用域限制在源碼.java文件級別,編譯器會直接忽略它.
RetentionPolicy.CLASS:注解的作用域限制在編譯期間.class文件級別,JVM運行時會直接忽略.
RetentionPolicy.RUNTIME: 作用域能夠延伸到JVM運行時

3、@Document(標記注解,沒有成員) 勇于描述其他類型的annotation應該被作為標注的程序成員的公共api,可以文檔化

4、Inherited(標記注解) 用該注解修飾的注解,會被子類繼承。如果一個用了@Inherited修飾的annotation類型被用于一個class,則這個annotation將被用于該class的子類

spring注解

1、@Service 用于標注業(yè)務層組件

2、@Controller 用于標注控制層組件,(如Struts中的action)

3、@Repository 用于標注數(shù)據(jù)訪問組件,即dao組件

4、@Component 泛指組件,當組件不好歸類的時候,我們可以使用這個注解進行標注(不推薦使用)

5、@Autowired 可以對類成員變量、方法及構造函數(shù)進行標注,完成自動裝配的工作

6、@Resource 在容器里面找相應的資源,也可以通過name屬性指定它name的資源??梢宰⒔獾絝ield或者setter上面(默認按名稱裝配,當找不到匹配的bean才會按類型裝配)

@Resource和@Autowired的區(qū)別:

1、@Autowired默認按照byType的方式進行bean匹配,@Resource默認按照byName的方式進行備案匹配    
2、@Autowired是spring的注解,@resource是J2EE的注解

7、@PostConstruct 標注了@PostConstruct注釋的方法將在類實例化后調用

8、@PreDestroy 標注了@PreDestroy注釋的方法將在類銷毀之前調用

9、@Qualifier 指定注入Bean的名稱(只能和@Autowired結合使用),此時與@Resource指定name屬性作用相同

10、@Scope 可以指定Bean實例的作用域

@Scope中可以指定如下值:

singleton:定義bean的范圍為每個spring容器一個實例(默認值)
prototype:定義bean可以被多次實例化(使用一次就創(chuàng)建一次)
request:定義bean的范圍是http請求(springMVC中有效)
session:定義bean的范圍是http會話(springMVC中有效)
global-session:定義bean的范圍是全局http會話(portlet中有效)

11、@RequestMapping 是一個用來處理請求地址映射的注解,可用于類或方法上。用于類上,表示類中的所有響應請求的方法都是以該地址作為父路徑

12、@RequestParam 參數(shù)綁定說明

13、@ModelAndView 作用域:request 聲明在屬性上,表示該屬性的value來源于model里“queryBean”,并被保存到model里 聲明在方法上,表示該方法的返回值被保存到model里

14、@Cacheable 聲明一個方法的返回值應該被緩存,例如@Cacheable(modelld=“testCaching”)

15、@CacheFlush 聲明一個方法是清空緩存的觸發(fā)器,例如 @CacheFlush(modelld=“testCaching”)

16、@SessionAttributes Spring 允許我們有選擇地指定 ModelMap 中的哪些屬性需要轉存到 session 中,以便下一個請求屬對應的 ModelMap 的屬性列表中還能訪問到這些屬性。(只能聲明在類上,而不能聲明在方法上)
例如:@SessionAttributes("currUser") // 將ModelMap 中屬性名為currUser 的屬性

17、@InitBinde 如果希望某個屬性編輯器僅作用于特定的Controller,可以在Controller中定義一個標注@InitBinder注解的方法

18、@Required 負責檢查一個bean在初始化時其聲明的 set方法是否被執(zhí)行, 當某個被標注了 @Required 的 Setter 方法沒有被調用,則 Spring 在解析的時候會拋出異常,以提醒開發(fā)者對相應屬性進行設置。 @Required 注解只能標注在 Setter 方法之上。

springmvc注解

1、@Controller 負責注冊一個bean到spring上下文中,bean的ID默認為類名稱開頭字母小寫,你也可以自己指定,如下:

//方法一: 
@Controller 
public class TestController {} 

//方法二:            
@Controller("tmpController") 
public class TestController {} 

2、@RequestMapping用來定義訪問的URL,你可以為整個類定義一個@RequestMapping,或者為每個方法指定一個。
把@RequestMapping放在類級別上,這可令它與方法級別上的@RequestMapping注解協(xié)同工作,取得縮小選擇范圍的效果,如:

@RequestMapping("/test") 
public class TestController {} 

該類下的所有訪問路徑都在/test之下

http://m.itdecent.cn/p/cbffeff5f6c7 鏈接

3、(1)@PathVariable用于方法中的參數(shù),表示方法參數(shù)綁定到地址URL的模板變量

@RequestMapping(value="/owners/{ownerId}", method=RequestMethod.GET)  
public String findOwner( , Model model) {  
  Owner owner = ownerService.findOwner(ownerId);    
  model.addAttribute("owner", owner);    
  return "displayOwner";  
}

(2)@PathVariable用于地址欄使用{xxx}模版變量時使用。如果@RequestMapping沒有定義類似"/{ownerId}" ,這種變量,則使用在方法中@PathVariable會報錯

4、@ModelAttribute
(1)應用于方法參數(shù),參數(shù)可以在頁面直接獲取,相當于request.setAttribute(,)
(2)應用于方法,將任何一個擁有返回值的方法標注上@ModelAttribute,使其返回值將會進入到模型對象的屬性列表中.
(3)應用于方法參數(shù)時@ModelAttribute("xx"),須關聯(lián)到Object的數(shù)據(jù)類型,基本數(shù)據(jù)類型 如:int,String不起作用

@ModelAttribute("items")//<——①向模型對象中添加一個名為items的屬性  
public List<String> populateItems() {  
        List<String> lists = new ArrayList<String>();  
        lists.add("item1");  
        lists.add("item2");  
        return lists;  
}  
@RequestMapping(params = "method=listAllBoard")  
public String listAllBoard(@ModelAttribute("currUser")User user, ModelMap model) {  
        bbtForumService.getAllBoard();  
        //<——②在此訪問模型中的items屬性  
        System.out.println("model.items:" + ((List<String>)model.get("items")).size());  
        return "listBoard";  
}

5、@ResponseBody 這個注解可以直接放在方法上,表示返回類型將會直接作為HTTP響應字節(jié)流輸出(不被放置在Model,也不被攔截為視圖頁面名稱)??梢杂糜赼jax

6、@RequestParam @RequestParam是一個可選參數(shù),例如:@RequestParam("id")注解,所以它將和URL所帶參數(shù) id進行綁定如果入?yún)⑹腔緮?shù)據(jù)類型(如int、long、float等),URL請求參數(shù)中一定要有對應的參數(shù),否則將拋出org.springframework.web.util.NestedServletException 異常,提示無法將 null 轉換為基本數(shù)據(jù)類型

@RequestParam包含3個配置 @RequestParam(required = ,value="", defaultValue="")
required :參數(shù)是否必須,boolean類型,可選項,默認為true
value: 傳遞的參數(shù)名稱,String類型,可選項,如果有值,對應到設置方法的參數(shù)
defaultValue:String類型,參數(shù)沒有傳遞時為參數(shù)默認指定的值

7、@SessionAttributes Spring 允許我們有選擇地指定ModelMap中的哪些屬性需要轉存到session中,以便下一個請求屬對應的ModelMap的屬性列表中還能訪問到這些屬性。這一功能是通過類定義處標注 @SessionAttributes 注解來實現(xiàn)的。@SessionAttributes 只能聲明在類上,而不能聲明在方法上,例如:

@SessionAttributes("currUser") // 將ModelMap 中屬性名為currUser 的屬性 
@SessionAttributes({"attr1","attr2"}) 
@SessionAttributes(types = User.class) 
@SessionAttributes(types = {User.class,Dept.class}) 
@SessionAttributes(types = {User.class,Dept.class},value={"attr1","attr2"}) 


@CookieValue 獲取cookie信息 
@RequestHeader 獲取請求的頭部信息
@ControllerAdvice 全局異常處理器 和@ExceptionHandler配合使用

mybatis注解

1、@CacheNamespace 為給定的命名空間(比如類)配置緩存

2、@CacheNamespaceRef 參照另一個命名空間來使用

3、@ConstructorArgs 收集一組結果傳遞給對象構造方法

4、@Arg 單獨的構造方法參數(shù),是ConstructorArgs 集合的一部分

5、@TypeDiscriminator 一組實例值被用來決定結果映射的表現(xiàn)

6、@Case 單獨實例的值和它的映射

7、@Results 結果映射的列表,包含了一個特別結果列如何被映射到屬性或字段的詳情

8、@Result 在列和屬性或字段之間的單獨結果映射。

9、@One 復雜類型的單獨屬性值映射

10、@Many 復雜類型的集合屬性映射

11、@Options 這個注解提供訪問交換和配置選項的寬廣范圍,它們通常在映射語句上作為屬性出現(xiàn)

12、@Insert、@Update、@Delect 這些注解中的每一個代表了執(zhí)行的真實 SQL

13、@InsertProvider、@UpdateProvider、@SelectProvider、@DeleteProvider 這些可選的SQL注解允許你指定一個類名和一個方法在執(zhí)行時來返回運行的SQL

14、@Param 當映射器方法需多個參數(shù),這個注解可以被應用于映射器方法參數(shù)來給每個參數(shù)一個名字。否則,多參數(shù)將會以它們的順序位置來被命名。

Hibernate注解

類級別注解

1、@Entity(name="tableName") 必須,注解將一個類聲明為一個實體bean

2、@Table(name="",catalog="",schema="") 可選,通常和@Entity 配合使用,只能標注在實 體的 class 定義處,表示實體對應的數(shù)據(jù)庫表的信息

屬性級別注解

與主鍵相關注解

3、@Id 必須,定義了映射到數(shù)據(jù)庫表的主鍵的屬性,一個實體只能有一個屬性被映射為主 鍵,置于 getXxxx() 前

4、@GeneratedValue(strategy=GenerationType,generator="") 可選,用于定義主鍵生成策略

5、@SequenceGenerator 注解聲明了一個數(shù)據(jù)庫序列

與非主鍵相關注解

6、@Version 可以在實體bean中使用@Version注解,通過這種方式可添加對樂觀鎖定的支持

7、@Basic 用于聲明屬性的存取策略:

@Basic(fetch=FetchType.EAGER)   即時獲?。J的存取策略)
@Basic(fetch=FetchType.LAZY)    延遲獲取

8、@Temporal - 用于定義映射到數(shù)據(jù)庫的時間精度:

@Temporal(TemporalType=DATE)       日期
@Temporal(TemporalType=TIME)       時間
@Temporal(TemporalType=TIMESTAMP) 兩者兼具

9、@Column 可將屬性映射到列,使用該注解來覆蓋默認值,@Column描述了數(shù)據(jù)庫表中該字段的詳細定義,這對于根據(jù) JPA 注解生成數(shù)據(jù)庫表結構的工具非常有作用

10、@Transient 可選,表示該屬性并非一個到數(shù)據(jù)庫表的字段的映射,ORM框架將忽略該屬性,如果一個屬性并非數(shù)據(jù)庫表的字段映射,就務必將其標示為@Transient,否則ORM 框架默認其注解為 @Basic

無注解屬性默認值

如果屬性為單一類型,則映射為@Basic,
否則,如果屬性對應的類型定義了@Embeddable注解,則映射為@Embedded,
否則,如果屬性對應的類型實現(xiàn)了Serializable, 則屬性被映射為@Basic并在一個列中保存該對象的serialized版本,
否則,如果該屬性的類型為java.sql.Clob或 java.sql.Blob,則作為@Lob并映射到適當?shù)腖obType

映射繼承關系

11、@Inheritance 定義所選擇的策略. 這個注解需要在每個類層次結構(class hierarchy) 最頂端的實體類上使用

映射實體Bean的關聯(lián)關系

12、@JoinColumn 可選,用于描述一個關聯(lián)的字段

13、@OneToOne 表示一個一對一的映射

14、@ManyToOne 表示一個多對一的映射,該注解標注的屬性通常是數(shù)據(jù)庫表的外鍵

15、@OneToMany 描述一個一對多的關聯(lián),該屬性應該為集合類型,在數(shù)據(jù)庫中并沒有實際字段

16、@ManyToMany 可選,描述一個多對多的關聯(lián)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,697評論 19 139
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,290評論 6 342
  • 1. 簡介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存儲過程以及高級映射的優(yōu)秀的...
    笨鳥慢飛閱讀 6,284評論 0 4
  • 前言 人生苦多,快來 Kotlin ,快速學習Kotlin! 什么是Kotlin? Kotlin 是種靜態(tài)類型編程...
    任半生囂狂閱讀 26,761評論 9 118
  • 粵東的冬天很溫暖,會給人一種2018年夏天已經來了的錯覺。今年夏天,我們都畢業(yè)了,唯一不同的是,我們沒有如約而至...
    森伊閱讀 548評論 0 6

友情鏈接更多精彩內容