springboot 注解(持续更新中)

@RequestBody

@RequestBody将json格式的数据转为java对象(字段名称要一致)

@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。在后端的同一个接收方法里,@RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。

注:一个请求,只有一个RequestBody;一个请求,可以有多个RequestParam。

注:当同时使用@RequestParam()和@RequestBody时,@RequestParam()指定的参数可以是普通元素、

       数组、集合、对象等等(即:当,@RequestBody 与@RequestParam()可以同时使用时,原SpringMVC接收

       参数的机制不变,只不过RequestBody 接收的是请求体里面的数据;而RequestParam接收的是key-value

       里面的参数,所以它会被切面进行处理从而可以用普通元素、数组、集合、对象等接收)。

       即:如果参数时放在请求体中,传入后台的话,那么后台要用@RequestBody才能接收到;如果不是放在

              请求体中的话,那么后台接收前台传过来的参数时,要用@RequestParam来接收,或则形参前

@responseBody

功能:@responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML

数据,需要注意的呢,在使用此注解之后不会再走试图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。

@Primary 

//该注解表示在同一个接口有多个实现类可以注入的时候,默认选择哪一个,而不是让autowire注解报错,官网要求当多个数据源时,必须指定一个datasource,另一个datasource则不用添加。

@Qualifier

 根据名称进行注入,通常是在具有相同的多个类型的实例的一个注入(例如有多个DataSource类型的实例)

@MapperScan

#basePackages为mapper所在的包,sqlSessionTemplateRef要引用的实例。
@MapperScan(basePackages = {"com.user.server.dao"}, sqlSessionTemplateRef = "userSqlSessionTemplate")

@datasource

指向数据源(多数据源可能会用到(非分包时)

加上这个,说明这个dao层的操作 的数据库是这个数据源的数据库

多数据源整合看别的

@EableConfigurationProperties

开启读取配置文件

@bean

想spring注入一个实例

@LoadBalanced

让restTemplate 在请求时拥有客户端负载均衡的能力

@EnableEurekaClient

eureka服务注册中的客户端开启注解

@EnableEurekaServer

eureka服务注册中心注解(标识本项目是服务注册中心)

@EnableDiscoveryClient

注册中心的标识,出eureka外,其他注册中心统一使用(zookeper,consul等)

@PathVariable

功能:解析路由中的的匹配的字符并转换成对应的参数

@RequestMapping("/users/{username}")
@ResponseBody
public String userProfile(@PathVariable("username") String username){ 
    // return String.format("user %s", username);
     return "user" + username;
}

@ControllerAdvice

这是一个增强的 Controller。使用这个 Controller ,可以实现三个方面的功能:

@ExceptionHandler

功能:全局异常处理

import fri.bhlz.util.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.validation.BindException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.multipart.MaxUploadSizeExceededException;

import java.io.PrintWriter;
import java.io.StringWriter;

@Slf4j
@ControllerAdvice
public class GlobalExceptionHandler {
    @Value("${spring.servlet.multipart.max-file-size}")
    private String MAX_SIZE;

    /**
     * 全局异常
     *
     * @param e
     * @return
     */
    @ResponseBody
    @ResponseStatus(HttpStatus.OK)
    @ExceptionHandler(Exception.class)
    public Result handleException(Exception e) {
        String msg = "系统异常";
        if (e instanceof MaxUploadSizeExceededException) {
            msg = "文件上传大小限制为:" + MAX_SIZE;
        }
        if (e instanceof BindException) {
            msg = ((BindException) e).getBindingResult().getFieldError().getDefaultMessage();
        }
        e.printStackTrace();
        log.error("系统捕获异常");
        log.error(e.getMessage());
        StringWriter sw = new StringWriter();
        e.printStackTrace(new PrintWriter(sw, true));
        log.error(sw.toString());

        return new Result(-1, msg, null);
    }
}
  1. 全局数据绑定

@ModelAttribute(name = "md")

  1. 全局数据预处理

@InitBinder("a")

@ModelAttribute(name = "md")

@InitBinder

#参数绑定解析
@InitBinder
public void initBinder(WebDataBinder binder) {  
  //将字符串格式日期类型    
  binder.registerCustomEditor(Date.class,new CustomDateEditor(new SimpleDateFormat("yyyyMMdd"), false));  
  //去除字符串空格   
  binder.registerCustomEditor(String.class,new StringTrimmerEditor(true));
}

@JsonFormat

功能:json格式化

@Data
public class TestA{
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date sj13;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值