SpringBoot 相关注解
-
Controller
@Controller
表示这个一个控制器,像是一个容器,里面可以加入多个url映射,映射到指定的页面。一般习惯于一个页面对应一个Controller,里面写入那个页面所有的url映射。
@Controller
public class IndexController {
}
如果确定这个Controller内返回的都是以json格式返回数据而不是页面的话,可以直接使用@RestController
。
-
RequestMapping
表示这是一个url映射,如果要映射多个url可以通过value属性设置。一个Controller里面可以写入多个mapping映射。
@Controller
public class IndexController {
@RequestMapping("/login") //表示访问/login.html时会显示Login.html,后缀名是默认的,也可以在配置文件中去设置。
public String login(){
return "Login";
}
//多映射的写法
@RequestMapping(value = {"login.html","Login.html"})
public String login(){
return "Login";
}
}
@RequestMapping
不限制请求的方式,如果需要通过相同的url不同的请求方式来区分的话可以这样写mapping注解:
@Controller
public class IndexController {
@GetMapping("/login") //映射/login.html的get请求
public String login(){
return "Login";
}
@PostMapping("/login") //映射/login.html的post请求
public String login(){
return "Login";
}
}
除了post和get的外,还有@DeleteMapping
、@PutMapping
。
- RequestParam
@Controller
public class IndexController {
@GetMapping("/login") //映射/login.html的get请求
public String login(@RequestParam("username") String username){
return "Login";
}
@PostMapping("/login") //映射/login.html的post请求
public String login2(String username){
if(username == null){
return "Error";
}
return "Login";
}
}
@RequestParam
用于指定请求要求的参数。两个Login
方法虽然都有一个username
的参数要求,但是加了@RequestParam
注解的方法是强制要求的,如果没有username
这个参数的话是会报错的;但是第二种方法则并不强制要求,如果没有username
也会正常执行,不过如果后面要用他的值的话肯定还是会抛空指针异常的。
-
Configuration
@Configuration
表示这是一个配置。 -
Bean
@Bean
表示这是一个bean容器。 -
Component
@Component
表示这是一个组件。 -
JsonProperty
@JsonProperty
用来指定对象属性当做json返回时所对应的key的值。一般标注在get方法上面,例如:
class User {
private int id;
public User(int id){
this.id = id;
}
@JsonProperty("userId") //指定返回json数据时的key值
publica int getId(){
return id;
}
}
@RestController
public class IndexController {
@GetMapping("/user")
public User login(){
return new User(1);
}
//如果标注的Controller注解那么需要加上一个@ResponseBody注解
@GetMapping("/user")
@ResponseBody
public User login(){
return new User(1);
}
}
这样返回的结果将是{userId:1}
- 日期转换
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")//后台转前台
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") //前台转后台(获取String转成Date)
private Date commentTime;
@JsonFormat
用后台(服务器端)转前台,即一个Date
类型的数据需要返回出去,那么SpringBoot
会自动转换成指定的格式的字符串然后返回回去。
@DateTimeFormat
用于前台转后台(服务器端),例如一个请求参数需要是Date
类型,但是请求时传的参数是字符串,这时SpringBoot
会自动转换成Date
类型。
-
屏蔽某些属性
@JsonIgnore