您现在的位置是:首页 >学无止境 >Spring Boot注解的使用细节网站首页学无止境

Spring Boot注解的使用细节

clear?color 2024-07-04 11:17:55
简介Spring Boot注解的使用细节

@RequestParam:

1、在前端传入多个相同的属性时,若使用数组接收,则无需使用@RequestParam注解。若使用集合接收,则须使用@RequestParam来绑定参数。

2、当前端发送的属性名与服务端接收的不一致时,可以使用@RequestParam(接收的属性名=“前端发来的属性名”)
来绑定接收,括号里面有个required属性,默认为true,若为true,则表示绑定的属性不可为空,不然会报错。若为false则不会报错。

@DateTimeFormat:

@DateTimeFormat里面有个pattern属性,用于指定前端传来的日期时间格式,如:
@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”)

@RequestBody

@RequestBody可以将前端发送来的json格式的参数封装进一个实体类对象中

@PathVariable

用于获取路径变量,并绑定给形参。有时候前端请求的路径不是写死的,比如是和id相关的,每个人的id不同,访问路径也不同,就需要设置路径变量,变量是多少,路径就是多少,如:
http://localhost:8080/pathParam/521
http://localhost:8080/pathParam/125
后面的521和125就是不同的路径变量

@RequestMapping

@RequestMapping
当注解在类上时,其路径为父路径,该类中的方法的路径为子路径。如:类的注解为@RequestMapping(“/parent”),该类某个方法的注解为@RequestMapping(“/get”),则该方法的请求路径为…/parent/get

路径参数:/{变量}

@RequestMapping("/pathParam/{id}")
    public String pathParam(@PathVariable Integer id){
        System.out.println(id);
        return "OK";
    }

当传入多个路径参数时:

http://localhost:8080/pathParam/521/cxl
http://localhost:8080/pathParam/125/陈熙龙

@RequestMapping("/pathParam/{id}/{name}")
    public String pathParam(@PathVariable Integer id,@PathVariable String name){
        System.out.println(id+":"+name);
        return "OK";
    }

@RestController

@RestController = @Controller + @ResponseBody

@ResponseBody

@ResponseBody 使用在Controller方法上或者类上 ,将方法返回值直接响应,如果返回值类型是 实体对象/集合/数组,将会转换为JSON格式相应

@Component(建议使用其衍生注解:@Controller,@Service,@Repository,用于区分哪个层的)

@Component(value = “bean名”),value可以省略,其三个衍生注解同样可以指定bean名,bean的名字默认为首字母小写的类名。:声明控制器bean只能使用@Controller
常用于DAO层和Service层的上,将当前类交给IOC(控制反转)容器管理,成为IOC容器中的bean,也可用于Dao层和Service层之外的其他类
如:

@Component
public class EmpService {
    @Autowired
    private EmpDao empDao;

@Controller

@Component的衍生注解,标注在Controller/控制器类上,作用与@Component一样,用的少,@RestController包含@Controller

@Service

@Component的衍生注解,标注在Service/业务类上,作用与@Component一样

@Repository

@Component的衍生注解,标注在DAO/数据访问类上,作用与@Component一样(由于与mybatis整合,用的少)

@ComponentScan

用于扫描bean的,未被扫描到的bean即为不存在于IOC容器,隐式的配置在启动类上,默认的扫描范围是启动类所在包及其子包 。@ComponentScan({{“指定要扫描的包”,“…”}}),一旦指定,就得额外显式声明默认范围

@Autowired

常用于Service层与Controller层分别声明的DAO层接口属性和Service层接口属性上,程序运行时,IOC容器会提供该类型的bean对象,并赋值给该变量 DI-依赖注入,默认是按照类型注入
如:

public class EmpController {
    @Autowired
    private EmpService empService;

@Primary,@Qualifier

由于@Autowired注解是按照类型注入的,一旦同一个类型的bean有多个,就不知道注入哪个,会报错。
@Primary,@Qualifier 就是为了解决这个问题,
@Primary可以指定bean的优先级,类在使用@Autowired的同时加上@Primary,就会优先注入此类的bean.
@Qualifier可以声明要注入bean的名字,类在使用@Autowired的同时加上@Qualifier,就会优先注入此bean,@Qualifier(“名字”)。

@Resource

@Autowired注解默认是按照类型注入的,而@Resource是按照bean名字来注入的,@Resource(name=“bean名”),可以替代@Autowired,此注解是jdk提供的,而@Autowired是Spring框架提供的

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。