Skip to content

Java原生注解

@Override

@Override 是 Java 中的一个注解,它用于标识一个方法是覆盖(重写)父类的方法。当一个方法添加了 @Override 注解时,编译器会检查该方法是否真的覆盖了父类中的一个方法,如果没有,则会报编译错误。

该注解通常用于增加代码的可读性和可维护性,因为它能够明确地表明一个方法是在覆盖父类的方法。这有助于其他开发者更容易地理解代码结构和继承关系。

总结: @Override 注解用于标识一个方法是在覆盖父类的方法,以增加代码的可读性和可维护性。

Spring框架注解

@Autowired:自动装配

@Autowired 是 Spring Framework 中的一个注解,用于自动装配Bean。当一个类上标注了@Autowired注解时,Spring容器会在上下文(Context)中寻找匹配的Bean,并自动注入到需要的地方。这样可以简化代码,避免显式地进行Bean的实例化和依赖注入。

在给定的代码中,@Autowired 注解用于标记 EmployeeServiceJwtProperties 两个类的实例化,这样在EmployeeController类中就可以直接使用这两个实例,而不需要手动创建它们。

总结:@Autowired 注解用于自动装配Bean,简化了bean的实例化和依赖注入。

@Component

@Component 是 Spring Framework 中的注解,它用于标识一个类作为 Spring 组件,并由 Spring 运行时管理。被标记为 @Component 的类将被自动检测并注册为 Spring 应用程序上下文中的 Bean。这意味着可以在其他组件中自动注入该类的实例,并且可以通过 Spring 上下文进行管理。

这个注解通常用于将业务逻辑、持久性实体、服务等标记为 Spring 管理的组件。

总结:@Component 的主要功能是标识一个类为 Spring 组件,并将其纳入 Spring 的管理和依赖注入体系中。

@Component@Autowired 注解是 Spring 框架中常用的注解,用于实现依赖注入和组件扫描。它们之间的区别在于它们的作用和使用场景。

@Component 注解

@Component 注解是 Spring 框架中最通用的注解之一,用于标识一个类为 Spring 组件。通常用于将类标记为受 Spring 管理的 bean,并且让 Spring 自动扫描和识别这些组件。这样可以在其他地方通过依赖注入的方式使用这些组件。

示例:

java
@Component
public class MyClass {
// Class body
}

@Autowired 注解

@Autowired 注解用于自动装配被 @Component 或其他特定注解标记的 Spring bean,并且通常用于实现依赖注入。通过 @Autowired 注解,我们可以告诉 Spring 在需要某个类型的 bean 时,自动将合适的实例注入进来。

示例:

java
@Component
public class MyOtherClass {
@Autowired
private MyClass myClass;
// Class body
}

区别

  • @Component 用于标识一个类为 Spring 组件,让 Spring 可以识别和管理这些组件。
  • @Autowired 用于自动装配标记为 @Component 的 Spring bean,实现依赖注入。

需要注意的是,@Autowired 注解通常与 @Component 注解一起使用,以实现依赖注入,但它也可以与其他一些标记为 @Component 的特定注解一起使用,例如 @Service@Repository 等。

@ExceptionHandler

@ExceptionHandler 是Spring Framework中的一个注解,用于声明一个方法是一个异常处理器。当一个控制器中的方法抛出了特定类型的异常时,被@ExceptionHandler注解所标记的方法将会被调用来处理这个异常。

具体来说,@ExceptionHandler注解可以在@Controller@RestController类中的方法上使用。标记的方法必须返回一个用于表示错误或异常信息的对象,例如ResponseEntity或简单的对象类型。

这样的注解提供了一种集中管理和处理异常情况的方法,让开发人员能够更容易地对不同种类的异常进行处理。

总结:@ExceptionHandler 注解用于声明一个方法是一个异常处理器,在控制器中用于捕获特定类型的异常并进行处理。

@RestControllerAdvice

@RestControllerAdvice 是一个注解,用于定义一个全局性的异常处理器。当使用 Spring MVC 或 Spring WebFlux 进行开发时,可以使用 @RestControllerAdvice 注解来定义一个统一的异常处理类,用于捕获处理在控制器中抛出的异常。

这个注解通常与 @ExceptionHandler 注解一起使用,用于指定处理特定异常的方法。通过 @ExceptionHandler 注解,您可以定义一个或多个方法来处理特定类型的异常,从而实现全局的异常处理。

总结:@RestControllerAdvice 注解用于定义全局异常处理器,可以通过 @ExceptionHandler 注解来指定处理特定异常的方法。

Mybatis相关注解

@Mapper

@Mapper 是一个注解,通常用于标识一个接口为 MyBatis 的映射器接口。在这种情况下,被注解的接口将由 MyBatis 框架自动创建其实现类。

这个注解告诉 MyBatis 在运行时为这个接口创建一个代理对象,以便使用 SQL 查询数据库,并将查询结果映射到 Java 对象上。

当应用程序需要与数据库交互时,@Mapper 注解的接口将负责定义数据库操作的方法。

代码总结: @Mapper 注解标识了这个接口为 MyBatis 的映射器接口,它将由 MyBatis 框架自动创建其实现类。主要功能是定义数据库操作的方法,以便在应用程序中与数据库进行交互。

Lombok库注解

@Data

这个注解是 Lombok 提供的,用于自动生成类中的常规方法,如 equals(), hashCode(), toString() 等。通过在类上添加 @Data 注解,Lombok 将会自动生成这些常规方法,使代码更加简洁。

@Slf4j@

@Slf4j是Lombok库中的一个注解,用于日志记录。它会在类中生成一个名为log的日志记录器字段,这样你就可以在类内部使用它来记录日志,而无需显式实例化一个日志记录器对象。这简化了向代码中添加日志记录语句的过程。实际的日志记录输出取决于所使用的底层日志记录框架,比如Log4j或Logback。

总结代码:

  • @Slf4j注解用于自动生成一个名为log的日志记录器字段。
  • 这个日志记录器被用于在EmployeeController类的不同部分记录日志,有助于调试、监控和理解应用程序的流程。

总的来说,给定代码中@Slf4j注解的主要目的是通过自动生成一个日志记录器字段,启用EmployeeController类内的日志记录,从而有助于跟踪类的行为,帮助调试和监控与员工管理相关的活动。

Controller相关注解

@RestController

标识一个类是控制器,然后才可以在下面指定前端的请求路径,在RequestMapping指定路径前缀,PostMapping/GetMapping中指定特定的函数路径

@RestController 是一个 Spring 框架提供的注解,它被用来标识一个类,表示这个类是一个 RESTful 服务的控制器。在 Spring MVC 应用中,使用 @RestController 注解的类将会自动将其返回的对象转换为 JSON 或 XML 响应,从而作为 HTTP 响应发送给客户端。

它的主要目的是简化 RESTful 服务的开发,并且相比传统的@Controller 注解,不需要在每个方法上使用 @ResponseBody 注解来指示返回数据值。

此注解表明类的实例将用作 RESTful 服务的控制器,并负责处理传入的 HTTP 请求,以及生成对应的 HTTP 响应数据。

总结:@RestController 注解用于标识一个类,表示这个类是一个 RESTful 服务的控制器,简化了 RESTful 服务的开发,不需要在每个方法上使用 @ResponseBody 注解。

@PathVariable

意思就是说当前端传入路径中包含需要的信息时,需要用这个注解把URL中的变量绑定到函数的形参中

@PathVariable注解用于Spring框架中的控制器方法中,它用于将URL模板中的变量绑定到方法的参数上。

当使用@PathVariable注解时,Spring框架将根据变量名将URL模板中对应的值注入到方法的参数中,以便在方法体内使用。

Mapping相关注解

Spring MVC是一个用于构建Web应用程序的开源框架,它提供了一种灵活且强大的方式来创建基于Java的Web应用程序。其中,Mapping注解用于将HTTP请求映射到相应的处理方法上。Spring MVC提供了多种Mapping注解,以下是它们的详细介绍:

@GetMapping、PostMapping、PutMapping、DeleteMapping、PatchMapping

  1. @RequestMapping: @RequestMapping 是最常用的Mapping注解,用于将HTTP请求映射到指定的处理方法上。它支持多种属性,如valuemethodparamsheaders,用于定义不同的映射条件。例如:

    java
    @Controller
    public class MyController {
        @RequestMapping(value = "/hello", method = RequestMethod.GET)
        public String sayHello() {
            return "hello";
        }
    }
  2. @GetMapping@PostMapping@PutMapping@DeleteMapping@PatchMapping: 这些注解是@RequestMapping的快捷方式,用于分别将HTTP的GET、POST、PUT、DELETE和PATCH请求映射到处理方法上。例如:

    java
    @Controller
    public class MyController {
        @GetMapping("/hello")
        public String sayHello() {
            return "hello";
        }
    }
    
    @Controller
    public class MyController {
        @PostMapping("/create")
        public String create() {
            return "created";
        }
    }
  3. @RequestParam: @RequestParam 用于将HTTP请求中的参数映射到处理方法的参数上。可以指定参数名、是否必须、默认值等属性。例如:

    java
    @Controller
    public class MyController {
        @GetMapping("/user")
        public String getUser(@RequestParam("id") Long userId) {
            // 使用userId参数
            return "user";
        }
    }
  4. @PathVariable: @PathVariable 用于将URL中的占位符部分映射到处理方法的参数上。例如:

    java
    @Controller
    public class MyController {
        @GetMapping("/user/{id}")
        public String getUser(@PathVariable("id") Long userId) {
            // 使用userId参数
            return "user";
        }
    }
  5. @RequestHeader: @RequestHeader 用于将HTTP请求的头部信息映射到处理方法的参数上。例如:

    java
    @Controller
    public class MyController {
        @GetMapping("/user-agent")
        public String getUserAgent(@RequestHeader("User-Agent") String userAgent) {
            // 使用userAgent参数
            return "user-agent";
        }
    }

通过使用这些Mapping注解,可以方便地定义Spring MVC中的请求映射关系,使得Web应用程序的处理方法更加清晰和易于维护。

@RequestMapping

@RequestMapping 是 Spring MVC 提供的一个注解,它用于将 HTTP 请求映射到 MVC 和 REST 控制器的处理方法。它可以用在类级别或方法级别。

类级别的 @RequestMapping 注解指定了该控制器中所有请求处理方法的基本 URL 路径。在这个例子中,类级别的 @RequestMapping("/admin/employee") 指定了所有请求处理方法的基本 URL 路径为 "/admin/employee"。

方法级别的 @RequestMapping 注解则用于将特定的 HTTP 请求映射到对应的处理方法。在该例子中,@PostMapping("/login")@PostMapping("/logout") 分别将 HTTP POST 请求映射到 login()logout() 方法。

总结: @RequestMapping 注解用于将 HTTP 请求映射到控制器处理方法,可以用在类级别或方法级别。

类级别@RequestMapping("/admin/employee") 指定了基本 URL 路径

方法级别@PostMapping("/login")@PostMapping("/logout") 分别映射了 HTTP POST 请求到对应的处理方法。

@RequestBody

@RequestBody 是Spring框架中用来绑定 HTTP 请求体到方法参数的注解。当一个请求被发送到一个处理方法时,Spring会尝试将请求的内容映射到被 @RequestBody 注解标注的方法参数上。这个注解通常用于处理 POST 请求,将请求体中的数据绑定到方法参数上,以便后续处理。

这个注解在上下文中的代码中被使用在 login 方法的 employeeLoginDTO 参数上。它指示Spring将请求体中的数据绑定到这个参数对象上,这样在 login 方法中就可以直接使用这个对象来处理请求中的数据。

总结:@RequestBody 注解用于绑定 HTTP 请求体到方法参数,在这个代码中用于将 POST 请求中的数据绑定到 login 方法的 employeeLoginDTO 参数上,以便后续处理员工登录操作。

Swagger相关注解

@Api

用在Controller层中,针对进行解释

@ApiOperation

用在Controller层中,针对类方法进行解释

@ApiModel

用在DTO层中,针对进行解释

@ApiModel(description = "员工登录时传递的数据模型") 注解: 这个注解来自于 Swagger,用于对类进行说明和描述。在这里,它描述了 EmployeeLoginDTO 类,指明其用途是用于员工登录时传递的数据模型。

@ApiModelProperty

用在DTO层中,针对类属性进行解释

字段/属性注解,Swagger来描述类的属性变量

异常相关注解

@ExceptionHandler

@ExceptionHandler是Spring框架中用于处理异常的注解。它是用在方法上的注解,用于指示一个特定的方法可以处理特定类型的异常。当被注解的方法捕获到对应的异常类型时,将会被调用来处理该异常。

这个注解可以出现在Controller中的方法上,也可以出现在全局异常处理器(如上下文中的 GlobalExceptionHandler 类)中的方法上。

总结:@ExceptionHandler用于标识一个方法可以处理特定类型的异常,被用于全局异常处理器中的方法,以提供对特定类型异常的处理逻辑。