各种注解含义及使用

@RestController

@RestController注解 是Spring 4.0引入的一个组合注解,用于简化RESTful Web服务的开发。

@RestController注解 相当于 @Controller@ResponseBody 注解的组合,表示该类是一个控制器,并且所有的方法返回值都将直接写入HTTP响应体中,而不是返回视图名称。

对应依赖 

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
@RestController
public class ExampleController {

}

接口返回参数为实体类时,返回Json数据 


@RequestMapping

用来处理请求地址到处理器controller功能方法映射规则的注解,这个注解会将 HTTP 请求映射到 MVC 和 REST 控制器的处理方法controller上,可用于类或方法上。

@RestController
@RequestMapping("/api")
public class ExampleController {

    @RequestMapping("/greet")
    public String greet(String name) {
        return "Hello";
    }
}

 访问方式:http://localhost:8080/api/greet


@RequestParam

用于获取查询参数

@RestController
@RequestMapping("/api")
public class ExampleController {

    @GetMapping("/greet")
    public String greet(@RequestParam String name) {
        return "Hello, " + name + "!";
    }
}

访问方式:http://localhost:8080/api/greet?name=Leslie

返回:Hello,Leslie!


@PathVariable

用于获取路径参数,用于get方法

@RestController
@RequestMapping("/api")
public class ExampleController {

    @GetMapping("/greet/{name}")
    public String greet(@PathVariable String name) {
        return "Hello, " + name + "!";
    }
}

访问方式:http://localhost:8080/api/greet/Leslie

返回:Hello,Leslie!


@RequestBody

用于获取请求体中的数据

@RestController
@RequestMapping("/api")
public class ExampleController {

    @PostMapping("/greet")
    public String greet(@RequestBody User user) {
        return "Hello, " + user.getName() + "!";
    }
}

class User {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

访问方式:http://localhost:8080/api/greet

返回:请求体为{"name": "Leslie"},响应将为Hello, Leslie!。


@Validated

校验参数是否符合规范,用于函数参数前

@RestController
@RequestMapping("/api")
public class ExampleController {

    @PostMapping("/greet")
    public String greet(@Validated String name) {
        return "Hello, " + name + "!";
    }
}

 


@JSONField(serialize = false)

阿里巴巴 Fastjson 库 提供的注解,用于控制 Java 对象与 JSON 数据转换时的字段行为。

  • 禁用字段的序列化
    当使用 Fastjson 将 Java 对象转换为 JSON 字符串时,被标记的字段不会包含在生成的 JSON 中
    典型场景:隐藏敏感信息(如密码、密钥)或不必要传输的字段。

 


@RequiredArgsConstructor

Lombok的注解,简化了对@Autowired书写,可以代替@Autowired注解

写在 Controller 类上

<dependency>
   <groupId>org.projectlombok</groupId>
   <artifactId>lombok</artifactId>
   <version>1.18.22</version>
</dependency>

注意事项

  1. 声明的变量必须加上final修饰
  2. 基于构造方法为属性赋值,容器通过调用类的构造方法将其进行依赖注入


@SneakyThrows

Lombok 提供的注解,旨在帮助开发者简化异常处理。

它允许方法抛出检查型异常而无需显式声明或捕获这些异常。

这对于那些不希望在方法签名中声明异常或不愿意编写复杂的 `try-catch` 块的场景非常有用。

直接写在函数上

                                                                Leslie Lee 随笔

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值