SpringCloud项目中可能会用到的注解解释

SpringCloud项目中可能会用到的注解解释(不定期更新)

@EnableDiscoveryClient

  • 贴在启动类上面,开启发现服务,需要在bootstrap文件中配置nacos地址
  • 用来让配置中心nacos发现这个服务

@EnableFeignClients

  • 贴在启动类上,开启feign服务
  • 配合@FeignClient(name = "服务名“,fallback=“回滚类.class”) 使用
    • 贴在自定义的接口上 ,接口下的方法可以当作远程服务的方法用,不用实现类
    • @RequestMapping注解值跟远程的一样,方法签名最好也一样
    • 回滚类需要实现这个接口
  • 如需要在sentinel中设置熔断降级,则需要配置sentinel的地址

@MapperScan(basePackages = “mapper.xml和接口的全类名”)

  • 贴在启动类上或者配置类上
  • 使spring能发现mapper

@ServerEndpoint("/{token}")

  • 贴在webSocket的类上,相当于RequestMapping,不适用WebSocket就当作没看见
    • @OnOpen
      • 贴在此类上表示该方法使浏览器建立连接时调用
    • @OnClose
      • 表示关闭连接时调用
    • @OnError
      • 服务器和浏览器通讯过程中出现异常会调用
    • @OnMessage
      • 收到消息时触发

@RocketMQMessageListener(consumerGroup = “群组名”,topic = ”标题名“)

  • 贴在实现 RocketMQListener的类上
    • 类里面需要实现onMessage方法,当收到mq的消息时调用

@RequestBody和@RequestParam区别

  • @RequestBody是可以是自定义类型的,比如表单,json
  • @RequestParam接收的是url上的参数类似 a=1&b=2这种

@RefreshScope

  • 一般配合@Value使用,用来动态刷新配置文件,这样在nacos中更改配置问价就不用重新启动
    • @Value("${server.port}")
      • 可以通过这样来取到配置文件中的值,一般用来解决硬编码问题
      • 可以贴字段上也可以直接贴方法参数

@ConfigurationProperties(prefix = “配置文件中的前缀”)

  • 贴在类上面或者方法都行
  • 用来取配置文件中的值,跟@Value的区别是,不用写表达式,字段跟配置文件中prefix后面的名字一样就行

@LocalTCC

  • 贴在需要事务的接口上,表示实现该接口的类被 seata 来管理
  • @TwoPhaseBusinessAction(name = “decrIntergralTry”, commitMethod = “decrIntergralCommit”, rollbackMethod = “decrIntergralRollback”)
    • 贴方法上,用来指定该方法的触发事务的方法
    • name 为 tcc 方法的 bean 名称,需要全局唯一,一般写方法名即可;
    • commitMethod 自然地写 Commit 方法的方法名;
    • rollbackMethod 写 Rollback 方法的方法名;
  • @BusinessActionContextParameter(paramName = “operateIntergralVo”)
    • 贴参数上,用来修饰 Try 方法的入参
    • 修饰的入参可以在 Commit 方法和 Rollback 方法中通过 BusinessActionContext 获取。
  • @GlobalTransactional
    • feign进行服务调用,在需要实现全局事务的方法上加上该注解即可

@ControllerAdvice

用来修饰下面3个注解,贴类上

  • @ExceptionHandler(异常类.class)
    • 用来处理全局异常,发生的该类异常都会调用贴了注解的方法
    • 贴在方法上
  • @ModelAttribute()
    • 用来定义全局变量,可以在RequestMapping方法里面使用
    • 贴在方法上
  • @InitBinder
    • 参数预处理,可以用于日期格式化和 ”空字符串“视为null 等
    • 对所有RequestMapping方法里面的参数生效
    • 贴在方法上

一些太过于简单常用的没有写,如果需要我可以补上


版权声明:本文为qq_35032539原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。