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网关服务