Java原生注解
@Override
@Override
是 Java 中的一个注解,它用于标识一个方法是覆盖(重写)父类的方法。当一个方法添加了 @Override
注解时,编译器会检查该方法是否真的覆盖了父类中的一个方法,如果没有,则会报编译错误。
该注解通常用于增加代码的可读性和可维护性,因为它能够明确地表明一个方法是在覆盖父类的方法。这有助于其他开发者更容易地理解代码结构和继承关系。
总结: @Override
注解用于标识一个方法是在覆盖父类的方法,以增加代码的可读性和可维护性。
Spring框架注解
@Autowired:自动装配
@Autowired
是 Spring Framework 中的一个注解,用于自动装配Bean。当一个类上标注了@Autowired
注解时,Spring容器会在上下文(Context)中寻找匹配的Bean,并自动注入到需要的地方。这样可以简化代码,避免显式地进行Bean的实例化和依赖注入。
在给定的代码中,@Autowired
注解用于标记 EmployeeService
和 JwtProperties
两个类的实例化,这样在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
@RequestMapping
:@RequestMapping
是最常用的Mapping注解,用于将HTTP请求映射到指定的处理方法上。它支持多种属性,如value
、method
、params
和headers
,用于定义不同的映射条件。例如:java@Controller public class MyController { @RequestMapping(value = "/hello", method = RequestMethod.GET) public String sayHello() { return "hello"; } }
@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"; } }
@RequestParam
:@RequestParam
用于将HTTP请求中的参数映射到处理方法的参数上。可以指定参数名、是否必须、默认值等属性。例如:java@Controller public class MyController { @GetMapping("/user") public String getUser(@RequestParam("id") Long userId) { // 使用userId参数 return "user"; } }
@PathVariable
:@PathVariable
用于将URL中的占位符部分映射到处理方法的参数上。例如:java@Controller public class MyController { @GetMapping("/user/{id}") public String getUser(@PathVariable("id") Long userId) { // 使用userId参数 return "user"; } }
@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
用于标识一个方法可以处理特定类型的异常,被用于全局异常处理器中的方法,以提供对特定类型异常的处理逻辑。