java中有哪些常用的注解?

在 Java 中,注解(Annotation)是一种元数据,用于为代码提供额外的信息,通常用于编译时检查、运行时处理或生成代码。以下是 Java 中常用的注解及其分类:


一、Java 内置注解

  1. @Override

    • 用途:标记方法重写父类或接口的方法。

    • 示例

      @Override
      public void toString() { ... }
  2. @Deprecated

    • 用途:标记方法、类或字段已过时,不推荐使用。

    • 示例

      @Deprecated
      public void oldMethod() { ... }
  3. @SuppressWarnings

    • 用途:抑制编译器警告(如未检查的类型转换)。

    • 示例

      @SuppressWarnings("unchecked")
      List list = new ArrayList();
  4. @SafeVarargs (Java 7+)

    • 用途:标记方法或构造器的可变参数(varargs)是类型安全的。

    • 示例

      @SafeVarargs
      public static <T> void print(T... args) { ... }
  5. @FunctionalInterface (Java 8+)

    • 用途:标记接口是函数式接口(只有一个抽象方法)。

    • 示例

      @FunctionalInterface
      public interface MyFunction {
          void execute();
      }

二、元注解(用于定义其他注解)

  1. @Target

    • 用途:指定注解可以应用的目标(如类、方法、字段等)。

    • 示例

      @Target(ElementType.METHOD)
      public @interface MyAnnotation { ... }
  2. @Retention

    • 用途:指定注解的保留策略(源码、编译时、运行时)。

    • 示例

      @Retention(RetentionPolicy.RUNTIME)
      public @interface MyAnnotation { ... }
  3. @Documented

    • 用途:标记注解是否包含在 Javadoc 中。

  4. @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、equalshashCode 等方法。

  • @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 等库的注解是实际开发中最常用的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值