spring boot2.X 常用注解 追加Cloud ; Hystrix ;

类注解

@RestController

路径:org.springframework.web.bind.annotation.RestController
作用:相当于 @Controller 与 @ResponseBody 的组合,表示该类中所有方法返回json格式

@ComponentScan

路径:org.springframework.context.annotation.ComponentScan
属性:basePackages = “xxx.xxx.xxx” 指定扫包根路径
作用:扫包范围定义

@RequestMapping

路径:org.springframework.web.bind.annotation.RequestMapping
属性:value="/xxx" 设置该类的根访问地址
作用:设置根访问地址

@EnableCircuitBreaker

路径:org.springframework.cloud.client.circuitbreaker
作用:开启Hystrix的断路器功能

@WebListener

路径:javax.servlet.annotation.WebListener
作用:使该类成为listener
注意: WebListener WebServlet WebFilter 注释需要在启动类添加 @ServletComponentScan 才能起作用

@WebServlet

作用:使该类成为servlet

@WebFilter

作用:使该类成为filter

方法注解

@RequestMapping

路径:org.springframework.web.bind.annotation.RequestMapping
属性:value="/xxx"
设置该方法的访问地址,如果类也设置了则路径组合
produces = “text/plain”
produces = {“text/plain”, “application/*”}
produces = MediaType.TEXT_PLAIN_VALUE
produces = “text/plain;charset=UTF-8”
具体属性介绍可以看官网介绍
设置返回数据的类型以及编码,json或xml的情况比较常见,这个属性要和@ResponseBody注解一起使用。一般这个注解多用于调试。
method = RequestMethod.XXX
设置请求类型
作用:设置方法访问地址,设置返回数据的类型及编码,设置请求类型。

@GetMapping

作用:处理get请求 相当于@RequestMapping value + method

@PostMapping

作用:处理post请求

@PutMapping

作用:处理put请求

@DeleteMapping

作用:处理delete请求

@HystrixCommand

属性: fallbackMethod:指定服务降级处理方法
ignoreExceptions:忽略某些异常,不发生服务降级;
commandKey:命令名称,用于区分不同的命令;
groupKey:分组名称,Hystrix会根据不同的分组来统计命令的告警及仪表盘信息;
threadPoolKey:线程池名称,用于划分线程池。
路径:com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand
作用:同属性介绍

@CacheResult

路径:com.netflix.hystrix.contrib.javanica.cache.annotation.CacheResult
属性:cacheKeyMethod:指定为缓存生成key的方法
作用:开启缓存,缺省所有参数作为缓存的key,cacheKeyMethod可以指定自己定义的方法返回key,
由于作用域只限于request,每次请求都会重新加载,感觉没什么用。
勉强找到了几个优点
在当次请求内对同一个依赖进行重复调用,只会真实调用一次。
在当次请求内数据可以保证一致性。
可以减少不必要的线程开销。

@HystrixCollapser

路径:com.netflix.hystrix.contrib.javanica.annotation.HystrixCollapser
属性: collapserKey
batchMethod
scope:作用域 缺省为request,单次请求中的合并,globla 全局请求合并
collapserProperties:
maxRequestsInBatch:该参数用来设置一次请求合并批处理中允许的最大请求数。
timerDelayInMilliseconds:用来设置批处理过程中每个命令延迟的时间,单位为毫秒,默认值为10
requestCache.enabled:设置批处理过程中是否开启请求缓存。
作用:将多个请求合并一次调用获取集合,再依次返回每个请求的结果。

@RefreshScope

路径:org.springframework.cloud.context.config.annotation.RefreshScope
属性:proxyMode = ScopedProxyMode
DEFAULT
NO
INTERFACES
TARGET_CLASS 缺省
这个注解的proxyMode默认值是ScopedProxyMode.TARGET_CLASS,这个代理
模式使用的是CGLIB方式。如果@RefreshScope使用在@Controller(不止这一个)标记的类上就会出现注入null值的问题。@RefreshScope只要是用在其他会被spring使用CGLIB代理的类上就会出问题。原因是@RefreshScope默认使用CGLIB代理,而目标类又是被CGLIB代理过的,这样就被代理了两次,第二次也就是@RefreshScope代理的时候会出现属性丢失的问题。解决办法,切换proxyMode模式@RefreshScope(proxyMode = ScopedProxyMode.DEFAULT)

作用:当Git仓库中的配置信息更改后,我们可以通过SpringBoot Actuator的refresh端点来刷新客户端配置信息需要依赖Actuator ,配置中暴露refresh
management:
endpoints:
web:
exposure:
include: ‘refresh’
清除refreshscope缓存幷销毁Bean,下次就会重新从BeanFactory获取一个新的实例(该实例使用新的配置)

变量注解

参数注解

@RequestBody

路径:org.springframework.web.bind.annotation.RequestBody
作用: 自动转换json --> 对象

@PathVariable

路径:org.springframework.web.bind.annotation.PathVariable
作用:与@RequestMapping(value=”xxx/{xx}”)一起使用,可以将URL中占位符参数{xx}绑定到类的方法形参中@PathVariable Long xx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值