Spring Cloud 常用注解

2年前 (2022) 程序员胖胖胖虎阿
256 0 0

1.@LoadBalanced

通常用来描述RestTemplate对象,作用是当我们使用RestTemplate对象调用服务时,系统底层会对服务进行拦截,拦截到url后,会基于url的服务名获取具体的服务实例,然后基于服务实例重构url,再基于新的url进行服务调用

2.@EnableFeignClients

用于描述启动类或配置类,此时项目启动时,就会启动一个FeignSterter组件,这个组件会对项目中使用@FeignClient的类创建代理对象

3.@FeignClient

该注解描述的接口为远程服务调用的接口,当springcloud扫描到被@FeignClient标识的类时,底层会为其创建实现类代理对象(jdk代理),并创建其对象交给spring容器管理(注册IOC容器)

该注解的value或name属性为调用远端服务的服务名

该注解创建出来Bean对象的名字是该注解的name或value属性,当我们对同一个服务创建两个远端服务调用接口时就会报错,我们可以通过contextId属性来修改Bean对象的名字

该注解的fallbackFactory属性,可以进行容错处理,我们手动生成FallbackFactory实现类,重置服务调用失败后的响应到客户端内容,将这个类交给spring容器管理后,通过fallbackFactroy属性加载这个类的字节码文件

4.@Slf4j

该注解标识的类会自动创建Logger日志对象,对象名为log

5.@RefreshScope

该注解描述的类,当nacos配置中心的配置发生变化,该类的对象会重新加载,属性也会发生变化

6.@SentinelResource

该注解标识的方法为一个切入点方法,也就是说访问此方法时,要进行限流,具体的限流操作写在切面的环绕通知方法内

7.@Configurationproperties

该注解标识的类会获取yml配置文件中的集合,定义此参数的prefix属性为要获取的集合信息在yml中的位置,但不包含集合前的一个信息,此信息应该定义为该注解标识类的属性,并为该属性提供set方法

8.@Resource

spring官方说明,当注入RedisTemplate或该类的任何opsForXXX实例时,使用此注解可以注入opsForXXX对应的对象,具体用法是,此注解属性name="restTemplate",注入的类为opsForXXX实例对应的类

@Resource(name = "redisTemplate")
private ValueOperations valueOperations;

9.@EnableCaching

此注解用在配置类或主启动类,告诉底层开启Aop方式的魂村应用,也就是让Cacheable和CachePut注解生效

10.@Cacheable

描述方法为一个缓存切入点方法,表示执行此方法时,先去redis缓存取数据,如果有,就返回对应的数据,如果没有,就查询mysql数据库

此注解的Value属性为redis缓存中Key的前缀,

此注解的Key属性为redis缓存中Key的后缀,Key属性中的#号作用是获取修饰方法中的参数

前缀与后缀底层默认用两个冒号连接

11.@CachePut

此注解描述的方法为一个切入点方法,当执行完此方房后,会将方法的返回值储存在redis缓存中,

Key由该注解指定,value为此方法的返回值

12.@EnableAuthorizationServer

在OAuth2规范中启动认证和授权

13.@EnableAsync

此注解用在主启动类或配置类,使@Async注解生效

14.@Async

此注解描述的方法为一个异步切入点方法,此方法执行时,会从Spring自带的线程池中取一个线程执行这个方法,而不是用web线程池中的线程,这样web线程池中的线程就可以用来继续服务其他新的客户端请求

15.@RefreshScope

自动刷新从配置中心获取的数据,只有添加此注解,配置中心数据刷新时,自动更新数据注入@value
注解标识的对象中

16.@RabbitListener 

1.指定队列名,发送消息

标识的类自动注册为消费者,可以通过该注解的queue属性指定从哪个队列自动接收消息

该注解也可以直接放在方法上,就不用@RabbitHandler注解来指定方法了,这样就可以在一个类创建多个消费者方法,每个消费者方法在执行时都会创建一个新的线程

2.指定交换机,发送消息

通过bindings=@QueueBindings绑定

@QueueBindings注解的value=@Queue作用就是绑定队列,默认生成随机队列名,非持久,独占,删除,declare="false"属性为不自动创建随机队列,使用指定的队列

@QueueBindings注解的exchange=@Exchange作用是绑定交换机,@Exchange注解的name属性指定存在的交换机名,declare="false"属性为不自动创建交换机,使用指定的交换机

指定关键词

通过@RabbitListener注解的key={},该属性的值是一个集合,关键词可以是多个,String类型

17.@Header

此注解可以从消息头接收数据,比如客户端服务中的关联id,接收的数据赋值给标识的参数 

17.@RabbitHandler

配合@RabbitListener注解使用,标识一个方法为处理消息的方法,收到的消息会自动传入这个方法进行处理

@RabbitListener(queues = "#{rndQueue.name}")

public void receive(long fbnq, // 消息返回结果

@Header(name = AmqpHeaders.CORRELATION_ID) String cid // 关联id

){

System.out.println("关联id: "+cid);

System.out.println("斐波那契数为: "+fbnq);

}

18.@EnableEurekaServer

在主启动类或配置类使用此注解,标识该服务为eureka服务端

19.@EnableConfigServer

在主启动类或配置类使用此注解,标识该服务为服务中心服务端

20.@EnableHystrixDashboard

在主启动类或配置类使用此注解,标识该服务为Hystrix-Dashboard服务,仪表盘,监控服务器的流量

21.@EnableTurbine

在主启动类或配置类使用此注解,标识该服务为Turbine服务,同时监控多个服务器流量

22.@EnableZuulProxy

在主启动类或配置类使用此注解,标识该服务为Zuul网关服务

版权声明:程序员胖胖胖虎阿 发表于 2022年10月25日 上午7:48。
转载请注明:Spring Cloud 常用注解 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...