@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);
}
}
- 全局数据绑定
@ModelAttribute(name = "md")
- 全局数据预处理
@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;
}