注解匯總

java注解

一、標(biāo)準(zhǔn)注解

1、@Override 重寫函數(shù)
2、@Deprecated 不鼓勵(lì)使用(有更好的方式、使用有風(fēng)險(xiǎn)或已不再維護(hù))
3、@SuppressWarnings 忽略某項(xiàng)Warning

二、元注解

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

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

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

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

spring注解

1、@Service 用于標(biāo)注業(yè)務(wù)層組件

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

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

4、@Component 泛指組件,當(dāng)組件不好歸類的時(shí)候,我們可以使用這個(gè)注解進(jìn)行標(biāo)注(不推薦使用)

5、@Autowired 可以對(duì)類成員變量、方法及構(gòu)造函數(shù)進(jìn)行標(biāo)注,完成自動(dòng)裝配的工作

6、@Resource 在容器里面找相應(yīng)的資源,也可以通過name屬性指定它name的資源。可以注解到field或者setter上面(默認(rèn)按名稱裝配,當(dāng)找不到匹配的bean才會(huì)按類型裝配)

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

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

7、@PostConstruct 標(biāo)注了@PostConstruct注釋的方法將在類實(shí)例化后調(diào)用

8、@PreDestroy 標(biāo)注了@PreDestroy注釋的方法將在類銷毀之前調(diào)用

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

10、@Scope 可以指定Bean實(shí)例的作用域

@Scope中可以指定如下值:

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

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

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

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

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

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

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

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

18、@Required 負(fù)責(zé)檢查一個(gè)bean在初始化時(shí)其聲明的 set方法是否被執(zhí)行, 當(dāng)某個(gè)被標(biāo)注了 @Required 的 Setter 方法沒有被調(diào)用,則 Spring 在解析的時(shí)候會(huì)拋出異常,以提醒開發(fā)者對(duì)相應(yīng)屬性進(jìn)行設(shè)置。 @Required 注解只能標(biāo)注在 Setter 方法之上。

springmvc注解

1、@Controller 負(fù)責(zé)注冊(cè)一個(gè)bean到spring上下文中,bean的ID默認(rèn)為類名稱開頭字母小寫,你也可以自己指定,如下:

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

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

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

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

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

http://www.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}模版變量時(shí)使用。如果@RequestMapping沒有定義類似"/{ownerId}" ,這種變量,則使用在方法中@PathVariable會(huì)報(bào)錯(cuò)

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

@ModelAttribute("items")//<——①向模型對(duì)象中添加一個(gè)名為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 這個(gè)注解可以直接放在方法上,表示返回類型將會(huì)直接作為HTTP響應(yīng)字節(jié)流輸出(不被放置在Model,也不被攔截為視圖頁面名稱)??梢杂糜赼jax

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

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

7、@SessionAttributes Spring 允許我們有選擇地指定ModelMap中的哪些屬性需要轉(zhuǎn)存到session中,以便下一個(gè)請(qǐng)求屬對(duì)應(yīng)的ModelMap的屬性列表中還能訪問到這些屬性。這一功能是通過類定義處標(biāo)注 @SessionAttributes 注解來實(shí)現(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 獲取請(qǐng)求的頭部信息
@ControllerAdvice 全局異常處理器 和@ExceptionHandler配合使用

mybatis注解

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

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

3、@ConstructorArgs 收集一組結(jié)果傳遞給對(duì)象構(gòu)造方法

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

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

6、@Case 單獨(dú)實(shí)例的值和它的映射

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

8、@Result 在列和屬性或字段之間的單獨(dú)結(jié)果映射。

9、@One 復(fù)雜類型的單獨(dú)屬性值映射

10、@Many 復(fù)雜類型的集合屬性映射

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

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

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

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

Hibernate注解

類級(jí)別注解

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

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

屬性級(jí)別注解

與主鍵相關(guān)注解

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

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

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

與非主鍵相關(guān)注解

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

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

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

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

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

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

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

無注解屬性默認(rèn)值

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

映射繼承關(guān)系

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

映射實(shí)體Bean的關(guān)聯(lián)關(guān)系

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

13、@OneToOne 表示一個(gè)一對(duì)一的映射

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

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

16、@ManyToMany 可選,描述一個(gè)多對(duì)多的關(guān)聯(lián)

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

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容