Java 开发中,常用的注解整理
- 一、元注解(用来修饰注解的注解)
- 二、Spring 全家桶中相关注解
- SpringMVC 注解
- IOC 注解
- AOP 注解
- 启动类注解
- 缓存注解
- 事务注解
- 其他 Spring 注解
- @SpringBootApplication
- @RestController
- @RequestMapping
- @GetMapping
- @PostMapping
- @PutMapping
- @DeleteMapping
- @RequestParam
- @PathVariable
- @RequestBody
- @ResponseBody
- @Value
- @Bean
- @Import
- @Conditional
- @Profile
- @PropertySource
- @Qualifier
- @ExceptionHandler
- @ResponseStatus
- @ControllerAdvice
- @CrossOrigin
- @Async
- @Cacheable
- @CacheEvict
- @CachePut
- @Transactional
- @EnableTransactionManagement
- @EnableAspectJAutoProxy
- @Aspect
- @Pointcut
- @Before
- @After
- @Around
- @AfterReturning
- @AfterThrowing
- @Order
- @Slf4j
- @Data
- @NoArgsConstructor
- @AllArgsConstructor
- @Builder
- @EqualsAndHashCode
- @ToString
- @Getter
- 三、常用的插件注解
- 四、Javadoc 注解
- 五、其他注解
一、元注解(用来修饰注解的注解)
从JDK 1.5开始, Java增加了对元数据(MetaData)的支持,提供了4个标准的用来对注解类型进行注解的注解类,我们称之为 meta-annotation(元注解)
@Target(ElementType.xxx)
描述注解的使用范围(即:被修饰的注解可以用在什么地方)
ElementType 的取值有:
- CONSTRUCTOR:用于描述构造器
- FIELD:用于描述域
- LOCAL_VARIABLE:用于描述局部变量
- METHOD:用于描述方法
- PACKAGE:用于描述包
- PARAMETER:用于描述参数
- TYPE:用于描述类、接口(包括注解类型)或enum声明
@Retention(RetentionPolicy.xxx)
描述注解的生命周期(即:被修饰的注解被保留到何时)
RetentionPolicy 的取值有:
- SOURCE:在源文件中有效(即源文件保留)
- CLASS:在class文件中有效(即class保留)
- RUNTIME:在运行时有效(即运行时保留)
@Documented
会被 Javadoc 工具动态提取成文档
@Inherited
允许自雷继承父类中的注解
二、Spring 全家桶中相关注解
SpringMVC 注解
IOC 注解
1、Spring 模式注解
注解 | 描述 | 起始版本 |
---|---|---|
@Component | 通用组件模式注解,是所有组件类型注解的元注解 | Spring 2.5 |
@Repository | 数据仓库模式注解,最初由域驱动设计(Evans,2003)定义为"模拟对象集合的封装存储、检索和搜索行为的机制" | Spring 2.0 |
@Service | 服务类组件模式注解 | Spring 2.5 |
@Controller | Web控制器组件模式注解 | Spring 2.5 |
@Configuration | 配置类模式注解 | Spring 3.0 |
2、Spring 容器装配注解
注解 | 描述 | 起始版本 |
---|---|---|
@ImportResource | 导入指定路径的配置文件,与XML元素作用相同 | Spring 2.5 |
@Import | 导入Configuration配置类 | Spring 2.5 |
@ComponentScan | 扫描指定包下标注Spring模式注解的类 | Spring 3.1 |
@Bean | 向容器中注册Bean,与XML元素作用相同 | Spring 3.0 |
3、Spring 依赖注入注解
注解 | 描述 | 起始版本 |
---|---|---|
@Autowired | Bean依赖注入,支持多种注入方式,例如标注在构造器、普通方法、字段等 | Spring 2.5 |
@Qualifier | 与@Autowired配合使用,支持细粒度的Bean注入 | Spring 2.5 |
@Value | 多用于注入外部化配置,例如xx.properties中的user.name=markus,可以通过@Value((“${user.name}”))注入到指定的字段中 | Spring 3.0 |
4、Spring 条件注解
注解 | 描述 | 起始版本 |
---|---|---|
@Profile | 基于配置条件的注解,常用与指定环境,在环境符合条件下注册 | Spring 3.1 |
@Conditional | 只有当所有指定条件都匹配时,组件才有资格注册,条件是可以在注册bean定义之前以编程方式确定的任何状态 | Spring 4 |
5、JSR 注解
注解 | 描述 | 起始版本 |
---|---|---|
@Inject | 与@Autowired作用相同用于Bean注入 | Spring 2.5 |
@Resource | 与@Autowired作用相同用于Bean注入 | Spring 2.5 |
@PostConstruct | 标注在自定义方法上,在Bean初始化阶段执行 | Spring 2.5 |
@PreDestroy | 标注在自定义销毁前执行方法上,在Bean销毁前执行 | Spring 2.5 |
AOP 注解
启动类注解
缓存注解
事务注解
@TransactionalEventListener 事务监听注解
参考文章:@TransactionalEventListener的使用和实现原理
其他 Spring 注解
@SpringBootApplication
@RestController
@RequestMapping
@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@RequestParam
@PathVariable
@RequestBody
@ResponseBody
@Value
@Bean
@Import
@Conditional
@Profile
@PropertySource
@Qualifier
@ExceptionHandler
@ResponseStatus
@ControllerAdvice
@CrossOrigin
@Async
@Cacheable
@CacheEvict
@CachePut
@Transactional
@EnableTransactionManagement
@EnableAspectJAutoProxy
@Aspect
@Pointcut
@Before
@After
@Around
@AfterReturning
@AfterThrowing
@Order
@Slf4j
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@EqualsAndHashCode
@ToString
@Getter
三、常用的插件注解
四、Javadoc 注解
Javadoc 是一种文档注释,目前支持三种注释。分别是单行注释、多行注释和文档注释。文档注释以 /** 开头,以 */ 结束,可以通过 Javadoc 生成 API 帮助文档,Java帮助文档主要用来说明类,成员变量和方法的功能。
文档注释只放在类、接口、成员变量、方法之前,因为 Javadoc 只处理这些地方的文档注释,而忽略其他地方的文档注释。
Javadoc 标签
Javadoc 工具可以识别文档注释中的一些特殊标签,这些标签一般以@开头,后跟一个指定的名字,有的也以{@开头,以}结束。Javadoc 可以识别的标签如下表所示:
标签 | 描述 | 示例 |
---|---|---|
@author | 标识一个类的作者,一般用于类注释 | @author description |
@deprecated | 指名一个过期的类或成员,表明该类或方法不建议使用 | @deprecated description |
{@docRoot} | 指明当前文档根目录的路径 | Directory Path |
@exception | 可能抛出异常的说明,一般用于方法注释 | @exception exception-name explanation |
{@inheritDoc} | 从直接父类继承的注释 | Inherits a comment from the immediate surperclass. |
{@link} | 插入一个到另一个主题的链接 | {@link name text} |
{@linkplain} | 插入一个到另一个主题的链接,但是该链接显示纯文本字体 | Inserts an in-line link to another topic. |
@param | 说明一个方法的参数,一般用于方法注释 | @param parameter-name explanation |
@return | 说明返回值类型,一般用于方法注释,不能出现再构造方法中 | @return explanation |
@see | 指定一个到另一个主题的链接 | @see anchor |
@serial | 说明一个序列化属性 | @serial description |
@serialData | 说明通过 writeObject() 和 writeExternal() 方法写的数据 | @serialData description |
@serialField | 说明一个 ObjectStreamField 组件 | @serialField name type description |
@since | 说明从哪个版本起开始有了这个函数 | @since release |
@throws | 和 @exception 标签一样. | The @throws tag has the same meaning as the @exception tag. |
{@value} | 显示常量的值,该常量必须是 static 属性。 | Displays the value of a constant, which must be a static field. |
@version | 指定类的版本,一般用于类注释 | @version info |
五、其他注解
@ConfigurationProperties(“xxx”)
- 作用:将配置文件中的属性,跟 Bean 动态绑定。需要跟 @Component注解或是@Component子类注解 配合使用
- 作用范围:
@SuppressWarnings
- 简介:java.lang.SuppressWarnings是J2SE5.0中标准的Annotation之一。可以标注在类、字段、方法、参数、构造方法,以及局部变量上。
- 作用:告诉编译器忽略指定的警告,不用在编译完成后出现警告信息。
- 使用:
- 示例:
- @SuppressWarnings(“unchecked”):忽略 unchecked 警告信息,如使用List,ArrayList等未进行参数化产生的警告信息。
- @SuppressWarnings(“serial”):如果编译器出现这样的警告信息:The serializable class WmailCalendar does notdeclare a static final serialVersionUID field of type long
使用这个注释将警告信息去掉。 - @SuppressWarnings(“unchecked”, “deprecation”):告诉编译器同时忽略unchecked和deprecation的警告信息。
- @SuppressWarnings(value={“unchecked”, “deprecation”}):等同于 @SuppressWarnings(“unchecked”, “deprecation”)