Spring Boot相关注解

前言

使用一些注解能显著提升我们的开发效率!

1.@SpringBootApplication

@SpringBootApplication可以看做是@Configuration、@EnableAutoConfiguration、@ComponentScan这三个注解的组合注解。

@Configuration:允许在上下文中注册额外的bean或者导入其他的配置类

@EnableAutoConfiguration:启用SpringBoot的自动配置机制

@ComponentScan:扫描被@Component(@Service,@Controller)注解的Bean,默认会扫描该类所在包下所有的类。这也是证明为什么被@SpringBootApplication注解的类,都在包的最高级目录。

2.@RestController

该注解为@Controller和@ResponseBody的组合

3.@GetMapping,@PostMapping

@GetMapping等价于(@RequestMapping(method=RequestMethod.GET))

@PostMapping等价于(@RequestMapping(method=RequestMethod.POST))

其他的@PutMapping,@DeleteMapping也都与上面的类似

4.@PathVariable

使用url地址中的参数

eg: id为url请求中的参数,使用该注解即可获取该值

@GetMapping("/get/{id}")
public User getUserById(@PathVariable("id") Integer id){
	return userService.getUserById(id);
}

5.@RequestParam

获取请求中指定的参数

6.@RequestBody

将请求中的Body体转换成对应的java对象

eg:

@PostMapping("/create")
public Integer createUser(@RequestBody User user){
	return userService.createUser(user);
}

7.@ControllerAdvice

在实际的应用过程中我们需要对异常进行统一的处理,防止一些信息暴露给用户,此时就需要使用这个注解对全局的异常进行一个处理和包装。

该注解里面有一些参数,用于指定处理异常的范围。

指定一个或者多个Controller

@ControllerAdvice(assignableTypes = {MyController1.class,MyController2.class})

指定一个或者多个包,该包下及其子包下的所有Controller都会被指定异常处理

@COntrollerAdvice(basePackages = {"com.demo.example1", "com.demo.example2"})

指定一个或者多个Controller类所在的包及其子包下所有的Controller都会被指定的异常处理

@ControllerAdvice(basePackageClasses = {MyController1.class,MyController2.class})

指定一个或者多个注解,被这些注解所标记的Controller都会被指定的异常处理

@ControllerAdvice(annotations = {RestController.class})

8.@ExceptionHandler

处理全局异常

@ExceptionHandler(value = Exception.class)

处理指定的某一类异常

eg:只处理Spring Security中无权访问的异常

@ExceptionHandler(value = AccessDeniedException.class)

9.@ResponseStatus

将异常转化为对应的状态码。

eg:页面加入返回500错误,如果不做处理的话,还会返回报错信息,在使用该注解之后,只会返回500错误。

上述所示并不友好,只看到一个错误,并没有将异常和错误请求等信息显示出来,不利于我们排查错误,一般使用ResponseStatusException这个类来对异常进行处理,即可友好的提示,同时方便我们排查错误。

ResponseStatusException 有3个构造方法。

status : http status

reason :response 的消息内容

cause : 抛出的异常

public ResponseStatusException(HttpStatus status) {
		this(status, null, null);
	}

	public ResponseStatusException(HttpStatus status, @Nullable String reason) {
		this(status, reason, null);
	}

	public ResponseStatusException(HttpStatus status, @Nullable String reason, @Nullable Throwable cause) {
		super(null, cause);
		Assert.notNull(status, "HttpStatus is required");
		this.status = status;
		this.reason = reason;
	}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值