注解根據來源可分為: 系統注解(自帶的,取決於JDK版本)、自定義注解及第三方注解
系統注解根據用途又可分為: java內置注解和元注解
根據運行機制(保留到什么時候)可分為: 源碼注解、編譯注解和運行注解
java內置注解
@Override
覆蓋父類方法
@Deprecated(不贊成)
用於方法,表明方法已過期,不建議使用
@Suppvisewarning
忽略警告,例如當我們要使用已過時方法,有的編譯器會出現警告,
@Suppvisewarning("deprecation")表示忽略此警告
-------------------------------------------------------------
元注解
用來注解其他注解
@Target
聲明注解用在什么地方
ElementType.CONSTRUCTOR 用於構造器
ElementType.FIELD 用於成員屬性
ElementType.LOCAL_VARIABLE 局部變量
ElementType.METHOD 方法
ElementType.PACKAGE 包
ElementType.PARAMETER 用於參數
ElementType.TYPE 類、接口或enum(enum可視為特殊的類)
ElementType.ANNOTATION_TYPE 注解
@Rentention
注解信息保留到什么時候
RententionPolicy.SOURCE 只在源代碼中保留,編譯階段拋棄
RententionPolicy.CLASS 只保留到編譯階段(CLASS文件),VM中運行時拋棄
RententionPolicy.RUNTIME 運行時也保留,可通過反射機制獲取注解信息
@Document
注解將被包含至javadoc中
備注: javadoc是Sun公司提供的一種技術,能從源代碼中抽取類、方法、成員、注釋等生成一個和源代碼配套的API幫助文檔
指令: javadoc xxx.java
@Inherited
子類可繼承父類的此種注解(如果父類有的話)
------------------------------------------------------------------
常用第三方注解
@Return
一般用於方法上,說明有返回值
@Controller
聲明為控制器,可返回jsp、html頁面的名稱並跳轉到相應頁面
備注:springMVC中,控制器就是一個其方法中添加了@RequestMapping來處理請求的類
@RequestBody
@ResponseBody
與@Controller結合使用,表明返回json數據
@RequestMapping(value= 'xx', method=XX)
表明方法是處理那種類型、什么地址的請求,返回值默認解析為跳轉路徑
@GetMapping()
組合注解,是@RequestMapping(method = RequestMethod.GET)的縮寫
@PostMapping()
組合注解,是@RequestMapping(method = RequestMethod.GET)的縮寫
@PathVariable
Spring3.0 新增帶占位符的 URL,例如@RequestMapping("/a/{id}"),通過@PathVariable可以將 URL中占位符參數綁定到控制器處理方法的入參中
@RestController
@Controller與@ResponseBody的結合
@ComponentScan
會掃描@Controller、@Service、@Repository、@Component,默認掃描自己所在的包
basePackage 制定掃描的包(根目錄開始)
includeFilters 包含的過濾器
excludeFilters 排除的過濾器
@Filter
type value
@Controller
聲明為一個控制器 語義性,功能同@Component
@RestController
相當於ResponseBody+Controller 表明此控制器返回json
@Test
junit 表明為測試方法
@Configuration
表明是一個配置類
@ComponentScan
組件掃描,主要是掃描我們自定義的組件(歸spring管理的)
@EnableAutoConfiguration
組件掃描,但主要是掃描jar包下
啟用 Spring 應用程序上下文的自動配置
@SpringBootApplication
相當於@Configuration+ @EnableAutoConfiguration+ @ComponentScan
@Autowired
自動裝配bean,默認按照類型
@Resource
自動裝配bean,默認按照名稱
@GeneratedValue(strategy=GenerationType.xxx)
用來設置主鍵的生成策略
AUTO 由程序控制
IDENTITY 由數據庫生成,采用數據庫自增長
。。。
@Id
聲明屬性為主鍵
@Column(name= "xxx")
聲明屬性在數據庫中的名稱
@ConfigurationProperties("xxx.xxx.xxx")
注入application.properties中xxx.xxx.xxx開頭的屬性
@Primary
確定該實現類為最優先
@Qualifier
為同一接口的實現類添加標志
@Mapper
聲明此接口為一個mapper,使用此注解無需再寫xml映射文件
componentModel 聲明此接口的實現類的類型
@MapperScan
掃描指定的包,包內所有的類都成為mapper,這樣無需為每一個類都添加@Mapper
@MapperScan(basePackages= {"xxx.xxx"}, sqlSessionFsactoryRef= "", sqlSessionTemplateRef= "")
@RequestBody
作用於形參上,將前台發來的固定格式的數據(xml或json)封裝成JavaBean對象
如何封裝: 使用系統默認配置的 HttpMessageConverter對數據進行解析,然后封裝到形參上
body-> JavaBean
@ResponseBody
作用於方法,表明此方法的返回值寫入Http response body中
如何寫入: 改注解作用的方法返回一個對象,通過適當的HttpMessageConverter轉換為指定格式后,寫入到Response對象的body數據區
JavaBean-> body
mybatis注解:
@Select
......