flag
解釋註解的方式:反射!反射是jdk中提供的一種機制,經過讀取編譯後的運行文件,反向獲取類信息的一種手段!能夠經過反射獲取類、方法、成員變量上的運行時註解內容!
元註解: 能註解到註解上的註解,能用在其餘註解上的註解html
JDK
從Java源碼中提取的全部註解
註解 |
版本 |
說明 |
@WebParam |
|
表示方法的參數 |
@Oneway |
|
表示爲只有輸入消息而沒有輸出消息的 Web Service 單向操做 |
@WebResult |
|
表示方法的返回值 |
@HandlerChain |
|
使 Web Service 與外部定義的處理程序鏈相關聯。 |
@WebService |
|
用於對接口,類進行註解,表示要發佈的web服務 |
@WebMethod |
|
該註解用於用@WebService註解的類或接口的方法上,表示要發佈的方法 |
@SOAPMessageHandlers |
|
|
@SOAPMessageHandler |
|
|
@SOAPBinding |
|
SOAP綁定類型:RPC、DOCUMENT |
@InitParam |
|
|
@Resource |
|
|
@Resources |
|
|
@PreDestroy |
Servlet2.5 |
被@PreDestroy修飾的方法會在服務器卸載Servlet以前運行,而且只會被服務器調用一次 |
@Generated |
|
|
@PostConstruct |
Servlet2.5 |
被@PostConstruct修飾的方法會在服務器加載Servle且構造函數以後執行,而且只會被服務器執行一次 |
@RespectBinding |
|
|
@ResponseWrapper |
|
|
@WebServiceRefs |
|
|
@Action |
|
|
@RequestWrapper |
|
|
@WebServiceProvider |
|
|
@WebServiceRef |
|
|
@FaultAction |
|
|
@WebFault |
|
|
@ServiceMode |
|
|
@WebEndpoint |
|
|
@BindingType |
|
|
@WebServiceClient |
|
|
@Addressing |
|
|
@MTOM |
|
|
@WebServiceFeatureAnnotation |
|
|
@XmlSeeAlso |
|
|
@XmlElementDecl |
|
|
@XmlIDREF |
|
|
@XmlValue |
|
|
@XmlAccessorType |
|
|
@XmlMixed |
|
|
@XmlID |
|
|
@XmlRootElement |
|
|
@XmlElementRef |
|
|
@XmlEnum |
|
|
@XmlElementWrapper |
|
|
@XmlEnumValue |
|
|
@XmlType |
|
|
@XmlAccessorOrder |
|
|
@XmlSchemaTypes |
|
|
@XmlInlineBinaryData |
|
|
@XmlSchema |
|
|
@XmlAnyElement |
|
|
@XmlSchemaType |
|
|
@XmlRegistry |
|
|
@XmlList |
|
|
@XmlAttribute |
|
|
@XmlAttachmentRef |
|
|
@XmlNs |
|
|
@XmlMimeType |
|
|
@XmlElements |
|
|
@XmlElement |
|
|
@XmlElementRefs |
|
|
@XmlTransient |
|
|
@XmlAnyAttribute |
|
|
@XmlJavaTypeAdapters |
|
|
@XmlJavaTypeAdapter |
|
|
@Interned |
|
|
@NotNull |
|
|
@Nullable |
|
|
@MessageDumping |
|
|
@FeatureConstructor |
|
|
@FeatureListValidatorAnnotation |
|
|
@InstanceResolverAnnotation |
|
|
@SchemaValidation |
|
|
@Serialization |
|
|
@StreamingAttachment |
|
|
@UsesJAXBContext |
|
|
@MemberSubmissionAddressing |
|
|
@XmlAccessorFactory |
|
|
@OverrideAnnotationOf |
|
|
@XmlIsSet |
|
|
@XmlLocation |
|
|
@WsgenProtocol |
|
|
@InheritedAttributes |
|
|
@DescriptorFields |
|
|
@ParameterNames |
|
|
@ManagedAttribute |
|
|
@AMXMetadata |
|
|
@InheritedAttribute |
|
|
@IncludeSubclass |
|
|
@ManagedData |
|
|
@ManagedOperation |
|
|
@Description |
|
|
@NameValue |
|
|
@ManagedObject |
|
|
@DescriptorKey |
|
|
@Taxonomy |
|
|
@Reset |
|
|
@ProbeParam |
|
|
@ProbeProvider |
|
|
@Probe |
|
|
@ProbeListener |
|
|
@EnvelopeStyle |
|
|
@Property |
|
|
@DatabindingMode |
|
|
@Reference |
|
|
@Immutable |
|
|
@Ignore |
|
|
@Logger |
|
|
@Setter |
|
|
@Constructor |
|
|
@Optimistic |
|
|
@SpecializedFunction |
|
|
@ScriptClass |
|
|
@Function |
|
|
@Getter |
|
|
@CallerSensitive |
|
|
@Contended |
|
|
@MXBean |
|
|
@ProbeName |
|
|
@ProviderName |
|
|
@Attributes |
|
|
@NameAttributes |
|
|
@ProviderAttributes |
|
|
@FunctionAttributes |
|
|
@ModuleName |
|
|
@ModuleAttributes |
|
|
@ArgsAttributes |
|
|
@FunctionName |
|
|
@ConstructorProperties |
|
|
@Transient |
|
|
@Deprecated |
jdk1.5 |
內置註解:用於標誌過期的類、方法和成員變量 |
@FunctionalInterface |
jdk1.8 |
函數式接口註解,用於定義函數式接口 |
@SafeVarargs |
jdk1.7 |
參數安全類型註解,用於提示用戶參數安全 |
@Override |
jdk1.5 |
內置註解:用於修飾重寫的方法 |
@SuppressWarnings |
jdk1.5 |
內置註解:用戶忽略@Deprecated標誌過的警告 |
@Repeatable |
jdk1.8 |
表示註解的屬性能夠重複!@Repeatable通俗來說,就是註解容器! |
@Inherited |
jdk1.5 |
元註解:子類繼承父類的註解(子類沒有任何註解修飾) |
@Retention |
jdk1.5 |
元註解:表示註解保留週期 |
@Documented |
jdk1.5 |
元註解:將註解寫入文檔 |
@Target |
jdk1.5 |
元註解:表示註解可使用在什麼地方 |
@Native |
jdk1.8 |
生成本機頭文件的工具的提示,以肯定是否須要頭文件,若是須要,它應該包含哪些聲明。 |
@Validate |
|
|
@RequireContainer |
|
|
@Require |
|
|
@Exported |
|
|
@SupportedOptions |
|
|
@SupportedAnnotationTypes |
|
|
@SupportedSourceVersion |
|
|
@Trusted |
|
|
Servlet
Tomcat 7.0
及以上版本的
server.api
纔有註解
註解 |
版本 |
說明 |
@WebServlet |
Servlet3.0 |
用於聲明servlet |
@WebListener |
Servlet3.0 |
用於聲明過監聽器,可經過控制filter的文件名來控制執行順序 |
@WebFilter |
Servlet3.0 |
用於聲明過濾器 |
@WebInitParam |
Servlet3.0 |
爲 Servlet 或者過濾器指定初始化參數,配置@WebServlet或@WebFilter時使用 |
@MultipartConfig |
Servlet3.0 |
HttpServletRequest 提供的對上傳文件的支持,該註解標註在 Servlet 上面 |
@HandlesTypes |
|
|
@HttpConstraint |
|
|
@HttpMethodConstraint |
|
|
@ServletSecurity |
|
|
Validation
JSR-303
是
JAVA EE 6
中的一項子規範,叫作
Bean Validation
,可是這只是一個接口,沒有具體實現。
javax.validation.Validation
、hibernate-validator
和Spring validtor
提供了JSR 303
規範中全部內置constraint 的實現,除此以外還有一些附加的 constraintjava
註解 |
支持Java類型 |
備註 |
@AssertFalse |
Boolean, boolean |
驗證元素值必須爲flase |
@AssertTrue |
Boolean, boolean |
驗證元素值必須爲true,不然拋異常 |
@CreditCardNumber |
CharSequence |
驗證信用卡號碼是否有效 |
@DecimalMax |
Object |
驗證數值是否小於等於指定值 |
@DecimalMin |
CharSequence |
驗證數值是否大於等於指定值 |
@Digits(integer = 3, fraction = 2) |
Long, Integer, Double, Float |
驗證註解的元素值的整數位數和小數位數上限 |
@Email |
CharSequence |
驗證元素必須是電子郵箱地址 |
@Future |
java.util.Date, java.util.Calendar |
驗證日期爲當前時間以後 |
@FutureOrPresent |
java.util.Date, java.util.Calendar |
驗證日期爲當前時間或以後一個時間 |
@Length(min=,max=) |
CharSequence |
驗證元素值包含在一個區間 |
@Max |
CharSequence |
檢驗當前數值小於等於指定值 |
@Min |
BigDecimal, BigInteger, byte, short,int, long,Number. |
檢驗當前數值大於等於指定值 |
@NotBlank |
CharSequence |
驗證元素值不爲null且移除兩邊空格後長度大於0 |
@NotEmpty |
CharSequence,Collection,Map and Arrays |
驗證元素值不爲null且不爲空(字符串長度不爲0、集合大小不爲0) |
@NotNull |
Object |
驗證元素值不能爲 null |
@Null |
Object |
驗證元素值爲null |
@Past |
java.util.Date, java.util.Calendar |
驗證日期爲當前時間以前 |
@PastOrPresent |
java.util.Date, java.util.Calendar |
驗證日期爲當前時間或以前 |
@Pattern(regex=,flag=) |
CharSequence |
驗證元素必須符合指定的正則表達式 |
@Range(min=,max=,message=) |
CharSequence |
驗證數值爲指定值區間範圍內 |
@Size(max=, min=) |
String,Collection,Map,arrays,CharSequence |
驗證元素個數包含在一個區間 |
@UniqueElements |
Collection |
校驗集合中的元素必須保持惟一 不然異常 |
@URL |
CharSequence |
驗證日期爲當前時間以前 |
@Valid |
Object |
驗證關聯對象元素進行遞歸校驗檢查 |
@ScriptAssert |
CharSequence |
腳本表達式的計算結果爲true |
@SafeHtml |
CharSequence |
可能包含不安全的html內容 |
JAX-RS
Jersey
和
CxF
框架實現了
JSR311
/
JSR339
標準
jersey經常使用註解git
Annotation |
做用 |
說明 |
@GET |
查詢請求 |
至關於數據庫的查詢數據操做 |
@PUT |
更新請求 |
至關於數據庫的更新數據操做 |
@POST |
插入請求 |
至關於數據庫的插入數據操做 |
@DELETE |
刪除請求 |
至關於數據的刪除數據操做 |
@Path |
uri路徑 |
定義資源的訪問路徑,client經過這個路徑訪問資源。好比:@Path("user") |
@Produces |
指定返回MIME格式 |
資源按照那種數據格式返回,可取的值有:MediaType.APPLICATION_XXX。好比:@Produces(MediaType.APPLICATION_XML) |
@Consumes |
接受指定的MIME格式 |
只有符合這個參數設置的請求再能訪問到這個資源。好比@Consumes("application/x-www-form-urlencoded") |
@PathParam |
uri路徑參數 |
寫在方法的參數中,得到請求路徑參數。好比:@PathParam("username") String userName |
@QueryParam |
uri路徑請求參數 |
寫在方法的參數中,得到請求路徑附帶的參數。好比:@QueryParam("desc") String desc |
@DefaultValue |
設置@QueryParam參數的默認值 |
若是@QueryParam沒有接收到值,就使用默認值。好比:@DefaultValue("description") @QueryParam("desc") String desc |
@FormParam |
form傳遞的參數 |
接受form傳遞過來的參數。好比:@FormParam("name") String userName |
@BeanParam |
經過Bean的形式傳遞參數 |
接受client傳遞的bean類型的參數,同時這個bean能夠在屬性上配置@FormParam用以解決client的屬性名稱和bean的屬性名稱不一致的問題。好比:@BeanParam User user |
@Context |
得到一些系統環境信息 |
經過@Context能夠得到如下信息:UriInfo、ServletConfig、ServletContext、HttpServletRequest、HttpServletResponse和HttpHeaders等 |
@XmlRootElement |
將bean轉換爲xml |
若是要將bean以xml或json的格式返回,必需要這個註解。好比:@XmlRootElementpublic class User{...} |
@XmlElements |
|
|
@XmlElement |
|
|
spring
// 手動回滾事務
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
聲明bean的註解
-
@Component
組件,沒有明確的角色
-
@Service
在業務邏輯層使用(service層)
-
@Repository
在數據訪問層使用(dao層)
-
@Controller
在展示層使用,控制器的聲明(C)
注入bean的註解
均可以註解在set方法和屬性上,推薦註解在屬性上(一目瞭然,少寫代碼)。
-
@Autowired
由Spring提供
-
@Inject
由JSR-330提供
-
@Resource
由JSR-250提供
java配置類相關注解
-
@Configuration
聲明當前類爲配置類,至關於xml形式的Spring配置(類上)
-
@Bean
註解在方法上,聲明當前方法的返回值爲一個bean,替代xml中的方式(方法上)
-
@Configuration
聲明當前類爲配置類,其中內部組合了@Component
註解,代表這個類是一個bean(類上)
-
@ComponentScan
用於對Component進行掃描,至關於xml中的(類上)
-
@WishlyConfiguration
爲@Configuration
與@ComponentScan
的組合註解,能夠替代這兩個註解
切面(AOP)相關注解
Spring支持AspectJ的註解式切面編程。
使用
@After
、
@Before
、
@Around
定義建言(advice),可直接將攔截規則(切點)做爲參數。
-
@After
在方法執行以後執行(方法上)
-
@Before
在方法執行以前執行(方法上)
-
@Around
在方法執行以前與以後執行(方法上)
-
@PointCut
聲明切點
在java配置類中使用
@EnableAspectJAutoProxy
註解開啓Spring對AspectJ代理的支持(類上)
AOP配置元素 |
描述 |
<aop:advisor> |
定義AOP通知器 |
<aop:after> |
定義AOP後置通知(無論該方法是否執行成功) |
<aop:after-returning> |
在方法成功執行後調用通知 |
<aop:after-throwing> |
在方法拋出異常後調用通知 |
<aop:around> |
定義AOP環繞通知 |
<aop:aspect> |
定義切面 |
<aop:aspect-autoproxy> |
定義@AspectJ 註解驅動的切面 |
<aop:before> |
定義AOP前置通知 |
<aop:config> |
頂層的AOP配置元素,大多數的<aop:*>包含在<aop:config>元素內 |
<aop:declare-parent> |
爲被通知的對象引入額外的接口,並透明的實現 |
<aop:pointcut> |
定義切點 |
@Bean的屬性支持
@Value註解
@Value
爲屬性注入值(屬性上),支持以下方式的注入
-
@Value("Michael Jackson")
String name; 注入普通字符
-
@Value("#{systemProperties['os.name']}")
String osName; 注入操做系統屬性
-
@Value("#{ T(java.lang.Math).random() * 100 }")
String randomNumber; 注入表達式結果
-
@Value("#{domeClass.name}")
String name; 注入其它bean屬性
-
@Value("classpath:com/hgs/hello/test.txt")
String Resource file; 注入文件資源
-
@Value("http://www.cznovel.com")
Resource url; 注入網站資源
-
@Value("${book.name}")
String bookName; 注入配置文件
注入配置使用方法web
編寫配置文件(test.properties)
book.name= test
@PropertySource
加載配置文件(類上)
@PropertySource("classpath:/test.propertie")
③ 還需配置一個
PropertySourcesPlaceholderConfigurer
的bean。
環境切換
-
@Profile
經過設定Environment的ActiveProfiles來設定當前context須要使用的配置環境。(類或方法上)
-
@Conditional
Spring4中可使用此註解定義條件話的bean,經過實現Condition接口,並重寫matches方法,從而決定該bean是否被實例化。(方法上)
異步相關
@EnableAsync 配置類中,經過此註解開啓對異步任務的支持,敘事性AsyncConfigurer接口(類上)
@Async 在實際執行的bean方法使用該註解來申明其是一個異步任務(方法上或類上全部的方法都將異步,須要@EnableAsync開啓異步任務)正則表達式
定時任務相關
-
@EnableScheduling
在配置類上使用,開啓計劃任務的支持(類上)
-
@Scheduled
來申明這是一個任務,包括cron,fixDelay,fixRate等類型(方法上,需先開啓計劃任務的支持)
@Enable*註解說明
這些註解主要用來開啓對xxx的支持。
-
@EnableAspectJAutoProxy
開啓對AspectJ自動代理的支持
-
@EnableAsync
開啓異步方法的支持
-
@EnableScheduling
開啓計劃任務的支持
-
@EnableWebMvc
開啓Web MVC的配置支持
-
@EnableConfigurationProperties
開啓對@ConfigurationProperties
註解配置Bean的支持
-
@EnableJpaRepositories
開啓對SpringData JPA Repository的支持
-
@EnableTransactionManagement
開啓註解式事務的支持
-
@EnableTransactionManagement
開啓註解式事務的支持
-
@EnableCaching
開啓註解式的緩存支持
測試相關注解
-
@RunWith
運行器,Spring中一般用於對JUnit的支持
@RunWith(SpringJUnit4ClassRunner.class)
-
@ContextConfiguration
用來加載配置ApplicationContext,其中classes屬性用來加載配置類
@ContextConfiguration(classes={TestConfig.class})
SpringMVC註解
-
@EnableWebMvc
在配置類中開啓Web MVC的配置支持,如一些ViewResolver或者MessageConverter等,若無此句,重寫WebMvcConfigurerAdapter方法(用於對SpringMVC的配置)。
-
@Controller
聲明該類爲SpringMVC中的Controller
-
@RequestMapping
用於映射Web請求,包括訪問路徑和參數(類或方法上)
-
@ResponseBody
支持將返回值放在response內,而不是一個頁面,一般用戶返回json數據(返回值旁或方法上)
-
@RequestBody
容許request的參數在request體中,而不是在直接鏈接在地址後面。(放在參數前)
-
@PathVariable
用於接收路徑參數,好比@RequestMapping(「/hello/{name}」)
申明的路徑,將註解放在參數中前,便可獲取該值,一般做爲Restful的接口實現方法。
-
@RestController
該註解爲一個組合註解,至關於@Controller
和@ResponseBody
的組合,註解在類上,意味着,該Controller的全部方法都默認加上了@ResponseBody
。
-
@ControllerAdvice
經過該註解,咱們能夠將對於控制器的全局配置放置在同一個位置,註解了@Controller
的類的方法可以使用@ExceptionHandler
、@InitBinder
、@ModelAttribute
註解到方法上,這對全部註解了 @RequestMapping
的控制器內的方法有效。
-
@ExceptionHandler
用於全局處理控制器裏的異常
-
@InitBinder
用來設置WebDataBinder,WebDataBinder用來自動綁定前臺請求參數到Model中。
-
@ModelAttribute
原本的做用是綁定鍵值對到Model裏,在@ControllerAdvice
中是讓全局的@RequestMapping
都能得到在此處設置的鍵值對。
Swagger2
註解名稱 |
註解屬性 |
做用域 |
屬性做用 |
@Api |
tags |
類 |
說明該類的做用 |
|
value |
類 |
說明該類的做用 |
@ApiOperation() |
value |
方法 |
描述方法做用 |
|
notes |
方法 |
提示內容 |
|
tags |
方法 |
分組 |
@ApiParam() |
name |
方法參數 |
參數名 |
|
value |
方法參數 |
參數說明 |
|
required |
方法參數 |
是否必填 |
@ApiModel() |
value |
類 |
對象名 |
|
description |
類 |
描述 |
@ApiModelProperty() |
value |
方法 |
字段說明 |
|
name |
方法 |
屬性名 |
|
dataType |
方法 |
屬性類型 |
|
required |
方法 |
是否必填 |
|
example |
方法 |
舉例 |
|
hidden |
方法 |
隱藏 |
@ApiImplicitParam() |
value |
方法 |
參數說明 |
|
name |
方法 |
參數名 |
|
dataType |
方法 |
數據類型 |
|
paramType |
方法 |
參數類型 |
|
example |
方法 |
舉例 |
@ApiResponse() |
response |
方法 |
返回類 |
|
code |
方法 |
返回碼 |
|
message |
方法 |
返回信息 |
|
examples |
方法 |
例子 |
註解 |
屬性 |
值 |
備註 |
@Api |
value |
字符串 |
可用在class頭上,class描述 |
|
description |
字符串 |
|
|
|
|
@Api(value = "xxx", description = "xxx") |
@ApiOperation |
value |
字符串 |
可用在方法頭上.參數的描述容器 |
|
notes |
字符串 |
|
|
|
|
@ApiOperation(value = "xxx", notes = "xxx") |
@ApiImplicitParams |
{} |
@ApiImplicitParam數組 |
可用在方法頭上.參數的描述容器 |
|
|
|
@ApiImplicitParams({@ApiImplicitParam1,@ApiImplicitParam2,...}) |
@ApiImplicitParam |
name |
字符串 與參數命名對應 |
可用在@ApiImplicitParams裏 |
|
value |
字符串 |
參數中文描述 |
|
required |
布爾值 |
true/false |
|
dataType |
字符串 |
參數類型 |
|
paramType |
字符串 |
參數請求方式:query/path |
|
|
|
query:對應@RequestParam?傳遞 |
|
|
|
path: 對應@PathVariable{}path傳遞 |
|
defaultValue |
字符串 |
在api測試中默認值 |
|
|
|
用例參見項目中的設置 |
@ApiResponses |
{} |
@ApiResponse數組 |
可用在方法頭上.參數的描述容器 |
|
|
|
@ApiResponses({@ApiResponse1,@ApiResponse2,...}) |
@ApiResponse |
code |
整形 |
可用在@ApiResponses裏 |
|
message |
字符串 |
錯誤描述 |
|
|
|
@ApiResponse(code = 200, message = "Successful") |