在 Java 中,注解(Annotation)是一种元数据,用于为代码提供额外的信息,通常用于编译时检查、运行时处理或生成代码。以下是 Java 中常用的注解及其分类:
一、Java 内置注解
-
@Override-
用途:标记方法重写父类或接口的方法。
-
示例:
@Override public void toString() { ... }
-
-
@Deprecated-
用途:标记方法、类或字段已过时,不推荐使用。
-
示例:
@Deprecated public void oldMethod() { ... }
-
-
@SuppressWarnings-
用途:抑制编译器警告(如未检查的类型转换)。
-
示例:
@SuppressWarnings("unchecked") List list = new ArrayList();
-
-
@SafeVarargs(Java 7+)-
用途:标记方法或构造器的可变参数(varargs)是类型安全的。
-
示例:
@SafeVarargs public static <T> void print(T... args) { ... }
-
-
@FunctionalInterface(Java 8+)-
用途:标记接口是函数式接口(只有一个抽象方法)。
-
示例:
@FunctionalInterface public interface MyFunction { void execute(); }
-
二、元注解(用于定义其他注解)
-
@Target-
用途:指定注解可以应用的目标(如类、方法、字段等)。
-
示例:
@Target(ElementType.METHOD) public @interface MyAnnotation { ... }
-
-
@Retention-
用途:指定注解的保留策略(源码、编译时、运行时)。
-
示例:
@Retention(RetentionPolicy.RUNTIME) public @interface MyAnnotation { ... }
-
-
@Documented-
用途:标记注解是否包含在 Javadoc 中。
-
-
@Inherited-
用途:标记子类是否继承父类的注解。
-
三、常用框架/库的注解
1. Spring 框架
-
@Component:标记类为 Spring 管理的组件(Bean)。 -
@Autowired:自动注入依赖(默认按类型匹配)。 -
@Service、@Repository、@Controller:细化@Component的语义(服务层、数据层、控制层)。 -
@RequestMapping:定义 HTTP 请求的 URL 映射(Spring MVC)。 -
@Value:注入配置文件中的值(如@Value("${app.name}"))。
2. JUnit 测试
-
@Test:标记测试方法。 -
@Before、@After:在测试方法前后执行的方法。 -
@BeforeClass、@AfterClass:在测试类的所有方法前后执行的方法。 -
@ParameterizedTest:参数化测试(需配合@ValueSource等使用)。
3. Lombok 库(简化代码)
-
@Data:自动生成 getter、setter、equals、hashCode等方法。 -
@Getter、@Setter:生成 getter 或 setter 方法。 -
@NoArgsConstructor、@AllArgsConstructor:生成无参/全参构造器。 -
@Slf4j:自动注入日志对象(如log.info())。
4. JPA/Hibernate(数据持久化)
-
@Entity:标记类为数据库实体。 -
@Table:指定实体对应的数据库表名。 -
@Id、@GeneratedValue:标记主键字段及其生成策略。 -
@Column:定义字段与数据库列的映射关系。
5. Jackson(JSON 序列化)
-
@JsonIgnore:忽略字段的序列化。 -
@JsonProperty:自定义 JSON 字段名。 -
@JsonFormat:定义日期/时间的格式(如@JsonFormat(pattern="yyyy-MM-dd"))。
四、自定义注解
可以通过元注解定义自己的注解,例如:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface LogExecutionTime {
String value() default "默认描述";
}
五、总结
-
核心注解:
@Override、@Deprecated、@SuppressWarnings。 -
元注解:
@Target、@Retention、@Documented、@Inherited。 -
框架注解:Spring、JUnit、Lombok、JPA 等库的注解是实际开发中最常用的。
Java 常用注解分类与应用

被折叠的 条评论
为什么被折叠?



