Java Web开发阶段注解

发布时间 2023-12-15 18:13:28作者: 奕帆卷卷

@Component

标注Spring管理的Bean,使用@Component注解在一个类上,表示将此类标记为Spring容器中的一个Bean

通过路径扫描来自动侦测以及自动装配到Spring容器中

@Controller

用于指示Spring类的实例是一个控制器,相对于实现Controller接口更加简单,使用Controller注解可以同时处理多个请求动作,更加灵活

使用@Controller标记一个类,使用他标记的类就是一个控制器类,Spring使用扫描机制查找应用程序中所有基于注解的控制器类,分发处理器会继续扫描使用了该注解的类的方法是, 并检测该方法是否使用了@RequestMapping注解的方法才是真正处理请求的处理器

@Service

@Service注解在类上,标记当前类是一个service类

加上该注解会将当前类自动注入spring容器中

@Repository

属于是Spring的注解,它用来标注访问层(dao层),它表示一个仓库,主要用于封装对于数据库的访问

@RestController

首先RestController注解相当于 @ResponseBody 和 @Controller 的结合

用于标注一个控制器类,返回的结果直接作为HTTP响应的内容,会自动将返回值转换为JSON或XML格式

@Autowired

可以对类成员变量,方法,构造函数进行标注,让spring完成bean自动装配的工作

使用@Autowired标注一个接口,会自动加载接口的实现类

注意:如果标注的接口有多个实现类,我们可以使用@Qualifier("beanld")标签将bean的ID作为参数使用,加载特定的类

@Resource

该注解和@Autowired注解都是用来实现依赖注入的,它可以根据名称来注入对应的Bean,可以通过指定name属性来指定要注入的Bean的名称

@Qualifier

限定描述符除了能根据名字进行注入,更能进行更细粒度的控制

可以指定bean作为参数使用,加载特定的类

@Primary

当有多个相同类型的bean时,使用@primarily来赋予bean更高的优先级

如果没有指定具体的Bean名成或者@Qualifier注解时,spring就会选择被@Primary注解标注的Bean注入

@Value

是Spring框架中的一个注解,用于将属性值注入到Bean的字段、构造方法参数、Setter方法或普通方法上。可以通过@Value注解直接指定属性的值

@ConfigurationProperties

属性配置的注解,与@Value注解相比,它更适用于批量注入属性。它可以将配置文件中的属性值批量注入到一个带有相同前缀的POJO(Plain Old Java Object)类中。

@RequestMapping

将HTTP请求映射到控制器方法上,@RequestMapping表示共享映射,如果没有指定请求方式,将接收GET,POST等等其他所有的HTTP请求方式

  • @GetMapping
  • @PostMapping
  • @PutMapping
  • @DeleteMapping

分别对应具体的HTTP请求方式的映射注解,都是HTTP方法特有的快捷方式@RquestMapping的变体

@RequestParam

将请求参数绑定到你控制器的方法参数上,可以指定参数的名称,是否必须,默认值等

    @GetMapping
    public Result page(@RequestParam(defaultValue = "1") Integer page,
                       @RequestParam(defaultValue = "5")  Integer pageSize,
                       Integer gender,String phone
                       ){
PageBean pageBean = customerService.page(page,pageSize,gender,phone);
return Result.success(pageBean);
    }

@PathVariable

用于将请求路径中的占位符参数绑定到方法的参数中

/**
     * 根据id查询信息
     * @param id
     * @return
     */
    @GetMapping("/{id}")
    public Result getByid(@PathVariable Integer id){
Customer customer= customerService.getByid(id);
return Result.success(customer);
}

@RequestBody

用于将请求体的内容绑定到方法的参数上,可以将请求体的JSON格式数据转化为Java对象

/**
 * 修改客户
 */
@PutMapping
public Result update(@RequestBody Customer customer){
customerService.update(customer);
return Result.success();
}

@ResponseBody

用于将方法的返回值直接以响应体的形式返回给客户端,可以将Java对象转化为JSON格式数据

@DateTimeFormat

一个用于日期时间格式化的注解,属于Spring框架中的注解,它可以应用于类的字段或方法的参数上,用于指定日期时间的格式。

在接收请求参数时,可以将字符串类型的日期时间转换为Java中的Date类型或其他日期时间类型

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate begin;
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate end;

@RestControllerAdvice

@RestControllerAdvice是一个组合注解,用于定义全局异常处理器和全局数据绑定器。

它结合了@ControllerAdvice和@ResponseBody两个注解的功能

用于统一处理控制器(Controller)中的异常,并返回自定义的响应数据

@ExceptionHandler

@ExceptionHandler是一个单独的注解,用于在控制器(Controller)中定义局部异常处理方法。通过在特定的方法上添加该注解,可以捕获指定类型的异常,并进行相应的处理操作,例如返回特定的错误信息或执行其他业务逻辑

@Transactional

它可以应用于类级别或方法级别

  • 类:@Transactional注解时,表示该类的所有公共方法都将被包装在一个事务中
  • 方法:在方法级别上使用@Transactional注解时,表示该方法将被包装在一个独立的事务中

@Mapper

用来标记时Mapper层,用于表示接口或类为MyBatis的映射器(Mapper),通过在接口或类上添加@Mapper注解,可以告诉MyBatis框架将其作为映射器进行处理,从而可以在该接口或类中定义数据库操作的方法

  • @Insert 插入操作

  • @Update 修改操作

  • @Delete 删除操作

  • @Select 查询操作

以上四种注释都是在映射器接口的方法上定义的数据库操作

@Options

注解用于配置数据库操作的一些选项,例如设置主键自动生成、设置是否使用缓存等。通过在方法上添加@Options注解,并指定相应的选项,可以对数据库操作进行一些额外的配置

@Results

@Results注解用于定义多个@Result注解,它可以在一个地方集中定义多个映射关系。可以将@Results注解应用于查询语句的@Select、@Insert、@Update或@Delete注解上

@Result

@Result注解用于定义单个映射关系,它主要用于将查询结果集中的字段与Java对象的属性之间进行一一映射。可以将@Result注解应用于查询语句的@Select、@Insert、@Update或@Delete注解上,也可以将其应用于@Results注解中

Lombok库

@Data

可以自动生成类中的所有基本方法,包括getter,seter,toString,equals和hasCode等

@Getter

可以自动生成类中的getter方法

@Setter

可以自动生成类中的setter方法

@NoArgsConstructor

可以自动生成类中的无参构造方法

@AllArgsConstructor

可以自动生成类中的包含所有参数的构造方法

@Slf4j

可以自动生成一个名为log的静态日志记录器,用于在代码中进行日志输出

测试注解

@Test

用于标记测试方法,表示该方法是一个测试方法

@BeforeAll

用于标记在所有测试方法执行之前需要执行的方法

@AfterAll

用于标记在所有测试方法执行之后需要执行的方法

@BeforeEach

用于标记在每个测试方法执行之前需要执行的方法

@AfterEach

用于标记在每个测试方法执行之后需要执行的方法

@ParameterizedTest

用于标记参数化测试方法,可以使用不同的参数多次执行同一个测试方法

@ValueSource

用于提供基本类型或字符串类型的参数值,用于参数化测试

@CsvSource

用于提供CSV格式的参数值,用于参数化测试