Java 开发之关键注解详细汇总

发布时间:2024-12-30 02:25

注意成分表,真品通常标注详细,假货可能省略关键成分 #生活常识# #购物消费技巧# #化妆品辨别真伪#

一、JDK自带的基本注解

@Override 作用:用于标识方法重写。它告诉编译器这个方法是重写父类中的方法,如果父类没有这个方法或者方法签名不匹配,编译器会报错。 示例:

class Parent { public void print() { System.out.println("Parent print"); } } class Child extends Parent { @Override public void print() { System.out.println("Child print"); } } @Deprecated 作用:用于标记某个元素(类、方法、字段等)已经过时。当其他代码使用这个被标记为过时的元素时,编译器会发出警告。 示例:

class OldClass { @Deprecated public void oldMethod() { System.out.println("This is an old method."); } } @SuppressWarnings 作用:用于抑制编译器产生警告信息。可以指定要抑制的警告类型,比如unchecked(未检查的类型转换警告)、deprecation(使用已过时的元素警告)等。 示例:

@SuppressWarnings("unchecked") public void someMethod() { List list = new ArrayList(); // 这里没有指定泛型类型,会产生未检查的警告,但是被抑制了 }

二、Java EE相关注解(以Servlet为例)

@WebServlet 作用:用于将一个类声明为Servlet。可以在这个注解中配置Servlet的名称、URL模式等属性。 示例:

@WebServlet(name = "MyServlet", urlPatterns = {"/myServlet"}) public class MyServlet extends HttpServlet { //... } @WebFilter 作用:用于将一个类声明为过滤器。可以指定过滤器的名称、过滤的URL模式等信息。 示例:

@WebFilter(filterName = "MyFilter", urlPatterns = {"/*"}) public class MyFilter implements Filter { //... } @WebListener 作用:用于将一个类声明为监听器,如Servlet上下文监听器、会话监听器等。 示例:

@WebListener public class MyServletContextListener implements ServletContextListener { //... }

三、Spring框架相关注解(以Spring Boot为例)

@SpringBootApplication 作用:这是一个组合注解,包含了@Configuration、@EnableAutoConfiguration和@ComponentScan。它用于标记一个主应用类,启动Spring Boot应用。 示例:

@SpringBootApplication public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } } @Component 作用:用于将普通的Java类标记为Spring组件,这些组件会被Spring容器管理。可以通过@ComponentScan扫描并加载到容器中。 示例:

@Component public class MyComponent { //... } @Service 作用:用于标记业务逻辑层的组件,本质上也是@Component,只是语义更明确,表示这是一个服务类。 示例:

@Service public class MyService { //... } @Repository 作用:用于标记数据访问层(如数据库访问)的组件,同样是@Component的一种特殊形式,用于和持久层操作关联。 示例:

@Repository public class MyRepository { //... } @Autowired 作用:用于自动装配Spring容器中的Bean。可以用在字段、构造函数、方法等上面,让Spring自动注入依赖的Bean。 示例:

@Service public class MyService { @Autowired private MyRepository myRepository; //... } @Qualifier 作用:当有多个相同类型的Bean时,和@Autowired一起使用来指定要注入的具体Bean的名称或限定符。 示例:

@Service public class MyService { @Autowired @Qualifier("specificRepository") private MyRepository myRepository; //... } @Value 作用:用于注入外部配置文件中的值或者直接注入常量值到Spring管理的Bean中。 示例:

@Service public class MyService { @Value("${my.property.value}") private String propertyValue; //... }

四、Hibernate相关注解(用于对象 - 关系映射,ORM)

@Entity 作用:用于将一个Java类标记为实体类,这个实体类可以和数据库中的表进行映射。 示例:

@Entity public class User { //... } @Table 作用:用于指定实体类对应的数据库表名。如果不指定,默认使用实体类的类名作为表名。 示例:

@Entity @Table(name = "users") public class User { //... } @Id 作用:用于标记实体类中的主键字段。 示例:

@Entity @Table(name = "users") public class User { @Id private Long id; //... } @GeneratedValue 作用:用于指定主键的生成策略,如自增长(IDENTITY)、序列(SEQUENCE)等。 示例:

@Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; //... } @Column 作用:用于定义实体类中的字段和数据库表中的列之间的映射关系。可以指定列名、列的长度、是否可为空等属性。 示例:

@Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "user_name", length = 50, nullable = false) private String userName; //... }

五、JUnit相关注解(用于单元测试)

@Test 作用:用于标记一个方法是测试方法。JUnit会执行被这个注解标记的方法来进行单元测试。 示例:

import org.junit.jupiter.api.Test; public class MyTest { @Test public void testMethod() { // 测试逻辑 } } @BeforeEach 作用:用于标记在每个测试方法执行之前需要执行的方法。通常用于初始化测试数据等操作。 示例:

import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; public class MyTest { private MyClass myObject; @BeforeEach public void setup() { myObject = new MyClass(); } @Test public void testMethod() { // 使用myObject进行测试 } } @AfterEach 作用:用于标记在每个测试方法执行之后需要执行的方法。通常用于清理测试资源等操作。 示例:

import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; public class MyTest { private MyClass myObject; @BeforeEach public void setup() { myObject = new MyClass(); } @Test public void testMethod() { // 使用myObject进行测试 } @AfterEach public void cleanup() { // 清理myObject相关资源 } } @BeforeAll 作用:用于标记在所有测试方法执行之前需要执行的方法。这个方法必须是静态方法,并且只会执行一次。 示例:

import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; public class MyTest { private static MyClass myObject; @BeforeAll public static void setupAll() { myObject = new MyClass(); } @Test public void testMethod() { // 使用myObject进行测试 } } @AfterAll 作用:用于标记在所有测试方法执行之后需要执行的方法。这个方法必须是静态方法,并且只会执行一次。 示例:

import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; public class MyTest { private static MyClass myObject; @BeforeAll public static void setupAll() { myObject = new MyClass(); } @Test public void testMethod() { // 使用myObject进行测试 } @AfterAll public static void cleanupAll() { // 清理myObject相关资源 } }

六、Lombok相关注解(用于简化Java代码编写)

@Data 作用:这是一个组合注解,包含了@Getter、@Setter、@ToString、@EqualsAndHashCode和@RequiredArgsConstructor。用于自动生成常用的方法,如getter和setter方法、toString方法等。 示例:

import lombok.Data; @Data public class User { private String name; private int age; } @Getter 作用:用于自动生成字段的getter方法。 示例:

import lombok.Getter; public class User { @Getter private String name; //... } @Setter 作用:用于自动生成字段的setter方法。 示例:

import lombok.Setter; public class User { @Setter private String name; //... } @ToString 作用:用于自动生成toString方法,方便打印对象的信息。 示例:

import lombok.ToString; @ToString public class User { private String name; private int age; } @EqualsAndHashCode 作用:用于自动生成equals和hashCode方法,方便比较对象是否相等和计算对象的哈希码。 示例:

import lombok.EqualsAndHashCode; @EqualsAndHashCode public class User { private String name; private int age; } @NoArgsConstructor 作用:用于自动生成无参构造函数。 示例:

import lombok.NoArgsConstructor; @NoArgsConstructor public class User { private String name; private int age; } @AllArgsConstructor 作用:用于自动生成全参构造函数。 示例:

import lombok.AllArgsConstructor; @AllArgsConstructor public class User { private String name; private int age; }

七、其他常用注解

@Retention 作用:用于指定注解的保留策略。可以是SOURCE(只在源代码中保留,编译器编译时会丢弃)、CLASS(在字节码文件中保留,但在运行时无法通过反射获取)或RUNTIME(在字节码文件中保留,并且在运行时可以通过反射获取)。 示例:

import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @Retention(RetentionPolicy.RUNTIME) public@interface MyAnnotation { //... } @Target 作用:用于指定注解可以应用的元素类型,如类、方法、字段、参数等。可以使用ElementType枚举中的值来指定,如ElementType.TYPE(类、接口、枚举)、ElementType.METHOD(方法)等。 示例:

import java.lang.annotation.ElementType; import java.lang.annotation.Target; @Target(ElementType.METHOD) public@interface MyAnnotation { //... } @Documented 作用:用于指定当生成Javadoc文档时,这个注解也会被包含在文档中。 示例:

import java.lang.annotation.Documented; @Documented public@interface MyAnnotation { //... } @FunctionalInterface 作用:用于标记一个接口是函数式接口。函数式接口是指只有一个抽象方法的接口,这种接口可以用于Lambda表达式。 示例:

@FunctionalInterface public interface MyFunction { int apply(int x); } @Repeatable 作用:用于指定一个注解可以在同一个元素上重复使用。需要配合一个容器注解来使用。 示例:

import java.lang.annotation.Repeatable; @Repeatable(MyAnnotations.class) public@interface MyAnnotation { //... } public@interface MyAnnotations { MyAnnotation[] value(); } @MappedSuperclass 作用(在JPA中):用于标记一个类是其他实体类的父类,这个父类的属性会被继承到子实体类中,但是这个父类本身不会被映射为一个独立的数据库表。 示例:

import javax.persistence.MappedSuperclass; @MappedSuperclass public class BaseEntity { // 公共的实体属性,如id、createDate等 } @Inherited 作用:用于指定一个注解可以被继承。如果一个类被标记了这个可继承的注解,那么它的子类也会自动继承这个注解。 示例:

import java.lang.annotation.Inherited; @Inherited public@interface MyAnnotation { //... } @Native 作用:用于标记一个方法是本地方法,这个方法是用其他语言(如C或C++)实现的。 示例:

public class MyClass { @Native public static native void myNativeMethod(); } @SafeVarargs 作用:用于标记一个方法,这个方法带有可变参数并且在方法内部对可变参数的使用是类型安全的。 示例:

public class MyClass { @SafeVarargs public static <T> void myMethod(T... args) { // 安全地使用可变参数 } } @SuppressWarnings("rawtypes") 作用:用于抑制关于使用原始类型(未指定泛型类型)的警告。 示例:

@SuppressWarnings("rawtypes") public void myMethod() { List list = new ArrayList(); } @Transient(在JPA中) 作用:用于标记一个实体类中的字段,这个字段不会被持久化到数据库中。 示例:

import javax.persistence.Entity; import javax.persistence.Table

网址:Java 开发之关键注解详细汇总 https://www.yuejiaxmz.com/news/view/603919

相关内容

以闪亮之名全菜谱攻略汇总 全家园菜谱超详细攻略合集
Java中规模软件开发实训——掌握财务自由的关键!解锁智能家庭记账系统的神奇力量!(家庭记账软件)
ZYNQ中GPIO函数详解汇总
10年Java面试总结:Java程序员面试必备的面试技巧
汇一汇丨NO.68 关键词:个人外汇业务
软件开发项目文档系列之七软件详细设计:从概要到细节的深化历程
Android开发实战:基于Java的日程管理日历应用设计与实现
软件开发工作总结
java中String s=”abc“及String s=new String(“abc”)详解
Java物联网硬件开发指南:实现智能家居控制功能

随便看看