Java常用注解&&四种元注解

一、常用注解

@Override
重写校验

@Deprecated
表示当前类或方法已过时,不推荐使用,但可以使用

@SuppressWarnings({“unchecked”,“unused”})
一直编译器警告

@interface
表明这是一个注解类

二、元注解

1、元注解概念:

作用于注解类上的注解

2、java中的元注解:

@Target({ElementType.TYPE})
             该注解表示作用目标
TYPE:接口、类、枚举、注解
FIELD:字段枚举的常量
METHOD:方法
PARAMETER:方法参数
CONSTRUCTOR:构造函数
LOCAL_VARIABLE:局部变量
ANNOTATION_TYPE:注解
PACKAGE:包
TYPE_PARAMETER:参数类型声明
TYPE_USE:使用的类型
@Retention
     @Retention元注解,用来表示注解的作用范围

参数值:
RetentionPolicy.SOURCE	
表示注解只保留在源文件,当java文件编译成class文件,就会消失
RetentionPolicy.CLASS(默认)	
注解被保留到class文件,但jvm加载class文件时候被遗弃
RetentionPolicy.RUNTIME	
注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在

在这里插入图片描述

@Documented
       @Document元注解,代表生成java文档时,是否显示注解的开关。

@Inherited
    该注解的作用是继承;
  	例,@SpringBootApplication使用了该注解,
 	Application类使用了@SpringBootApplication注解,
 	那么所有Application的子类将默认使用@SpringBootApplication注解。
<think>好的,我现在需要回答用户关于Java常用注解及其用法的问题。首先,用户已经提供了两段参考引用,我需要结合这些信息来构建回答。让我仔细看看用户提供的引用内容。 引用[1]提到Java注解是JDK5引入的新特性,用于为代码提供数据,将数据与程序素关联,有助于简化程序设计。这部分解释了注解的基本概念和作用,可以作为引言部分的基础。 引用[2]则给出了一些具体的常用注解,比如在业务层的方法、类、接口上使用的注解,特别是事务管理相关的注解,比如可能指的是Spring的@Transactional。这里需要确认@Transactional的作用,以及它在Spring中的使用场景。 用户的需求是了解常用注解列表及作用,所以我需要列举不同类别下的常见注解,并说明它们的作用和用法。可能需要分层次来组织,比如分为核心Java注解、Spring框架中的注解、JUnit测试注解等,这样结构更清晰。 接下来,我需要回忆或查找常见的Java注解。核心Java中的内置注解包括@Override、@Deprecated、@SuppressWarnings,这些必须提到。然后是框架中常用的,比如Spring的@Autowired、@Controller、@Service、@Repository,JPA的@Entity、@Table,Spring Boot的@SpringBootApplication,Spring MVC的@RequestMapping及其变体如@GetMapping,还有Spring的@Transactional。JUnit的@Test、@Before、@After等也是常用的。 需要确保每个注解的作用和使用场景都准确。比如@Transactional用于事务管理,需要说明它可以用在方法或类上,开启事务、提交或回滚的条件。@Autowired用于自动注入依赖,@Component及其派生注解用于标记Spring管理的组件。 另外,用户提供的引用[2]中提到了事务管理,这可能涉及Spring的声明式事务管理,需要强调@Transactional的使用位置和效果。同时,用户可能对如何正确使用这些注解感兴趣,所以需要给出简单的示例,如代码片段,但根据系统指令,行内代码需要用$...$格式,独立代码块用$$...$$,但用户示例中的Python代码用了```python,这里可能需要调整。不过用户的问题是关于Java的,所以可能需要用Java代码示例,但根据指令,数学表达式才需要LaTeX,代码可能用代码块。不过原问题中的示例用户可见层允许使用代码块,所以可能需要用正确的格式。 还需要注意系统级指令中的要求:行内数学表达式用$...$,独立公式用$$...$$,但这里的回答主要是文本和代码,可能不涉及数学公式,但需要正确使用LaTeX格式。不过用户的问题是关于注解,可能不需要数学表达式,但需要确保所有提到的代码部分正确格式化。 另外,需要生成相关问题,用户示例中列出了三个相关问题,我需要根据回答内容提出相关的扩展问题,比如注解的工作原理、自定义注解的方法、事务注解的注意事项等。 现在,我需要组织这些信息,按照用户提供的结构,首先回答常用注解列表及作用,分点说明,然后生成相关问题。同时,确保引用标记正确添加,引用[1]和引用[2]分别在相应的位置被引用。 需要验证每个注解的准确性,比如@Transactional是否属于Spring而非Java核心库,确保分类正确。例如,核心Java注解Java自带的,而其他如Spring、JPA、JUnit的注解属于特定框架的扩展。 可能还需要补充一些常用注解,比如Lombok的@Data、@Getter、@Setter,但用户提供的引用中没有提到,是否需要包含?根据用户的问题,是询问Java中的常用注解,可能包括核心和主流框架的,所以可以包括Spring相关的,但Lombok可能属于第三方库,视情况是否提及。不过用户提供的引用中没有提到,可能暂时不包含,保持回答基于用户提供的资料和常见知识。 总结,结构可能如下: 1. 引言:Java注解的作用(引用[1]) 2. 分类列举常用注解: a. Java核心注解:@Override, @Deprecated, @SuppressWarnings b. Spring框架注解:@Autowired, @Component, @Controller, @Service, @Repository, @Transactional(引用[2]) c. Spring MVC注解:@RequestMapping, @GetMapping等 d. JPA注解:@Entity, @Table e. JUnit注解:@Test, @Before, @After f. Spring Boot注解:@SpringBootApplication 3. 每个注解的作用和示例代码(如果有必要) 4. 相关问题:如何自定义注解注解的工作原理、事务管理注意事项等 需要确保每个部分的信息准确,引用正确。例如,在提到@Transactional时,引用[2]中的内容需要被引用,说明其作用和在业务层的应用。 最后,生成的相关问题应基于回答内容,帮助用户进一步探索。</think>### Java常用注解列表及作用 Java注解(Annotation)是JDK5引入的数据标记机制,用于为类、方法、字段等素添加说明信息,简化代码与数据的耦合[^1]。以下是Java中常见的注解及其作用: --- #### 1. **核心Java注解** - **`@Override`** 标记方法重写父类或接口的方法,编译器会检查方法签名是否正确。 ```java @Override public String toString() { return "example"; } ``` - **`@Deprecated`** 标记已过时的方法或类,调用时编译器会生成警告。 ```java @Deprecated public void oldMethod() { /* ... */ } ``` - **`@SuppressWarnings`** 抑制编译器警告(如未使用变量、未检查类型等)。 ```java @SuppressWarnings("unchecked") List list = new ArrayList(); ``` --- #### 2. **Spring框架注解** - **`@Autowired`** 自动注入依赖对象,默认按类型匹配。 ```java @Autowired private UserService userService; ``` - **`@Component`及其派生注解** 标记类为Spring管理的组件: - **`@Controller`**:Web层控制器。 - **`@Service`**:业务逻辑层。 - **`@Repository`**:数据访问层。 ```java @Service public class UserService { /* ... */ } ``` - **`@Transactional`** 声明事务管理,方法执行前开启事务,成功提交,异常回滚[^2]。 ```java @Transactional public void updateUser(User user) { /* ... */ } ``` --- #### 3. **Spring MVC注解** - **`@RequestMapping`及变体** 定义HTTP请求映射: - `@GetMapping`、`@PostMapping`:限定请求方法。 ```java @GetMapping("/users") public List<User> getUsers() { /* ... */ } ``` - **`@ResponseBody`** 将方法返回值直接写入HTTP响应体(如JSON)。 --- #### 4. **JPA(数据库映射)注解** - **`@Entity`** 标记类为数据库实体,对应一张表。 - **`@Table`** 指定实体对应的表名。 ```java @Entity @Table(name = "user") public class User { /* ... */ } ``` --- #### 5. **JUnit测试注解** - **`@Test`** 标记方法为测试用例。 - **`@Before`/`@After`** 在每个测试方法执行前/后运行。 ```java @Before public void setup() { /* ... */ } ``` --- #### 6. **Spring Boot注解** - **`@SpringBootApplication`** 标记主启动类,整合自动配置、组件扫描等功能。 ```java @SpringBootApplication public class Application { public static void main(String[] args) { /* ... */ } } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值