






















Spring Cloud 生态包含多个组件(如服务注册发现、服务调用、配置中心、熔断降级等),每个组件都提供了特定的注解简化开发。以下按组件分类梳理常用注解,详细说明其作用、核心属性及含义。
用于将服务注册到注册中心(如 Eureka、Nacos、Consul),或让服务发现其他服务。
@EnableDiscoveryClient。instanceId:服务实例唯一标识(默认是 主机名:服务名:端口,可自定义为 IP:端口)。leaseRenewalIntervalInSeconds:客户端向 Eureka Server 发送续约请求的间隔(默认 30 秒)。preferIpAddress:是否优先使用 IP 地址作为服务实例的主机名(默认 false,设为 true 便于跨网络访问)。Feign 是声明式 HTTP 客户端,简化服务间调用,常用注解如下:
@FeignClient 的接口。basePackages:指定扫描 @FeignClient 接口的包路径(如 basePackages = "com.example.feign")。clients:指定具体要加载的 Feign 接口(如 clients = UserFeignClient.class,适用于精确扫描)。defaultConfiguration:全局 Feign 配置类(如日志级别、拦截器等,优先级低于接口自身的 configuration)。name / value:必填,远程服务的名称(与注册中心的服务名一致,用于服务发现)。例如 name = "user-service"。url:可选,直接指定远程服务的 URL(跳过服务发现,适用于调试或固定地址的服务)。例如 url = "http://localhost:8081"。fallback:降级处理类(需实现当前 Feign 接口),当远程服务调用失败(超时、熔断等)时,会执行该类的对应方法。例如 fallback = UserFeignFallback.class。fallbackFactory:比 fallback 更灵活的降级工厂类,可获取异常信息。例如 fallbackFactory = UserFeignFallbackFactory.class。configuration:当前 Feign 接口的专属配置类(如自定义日志、拦截器),优先级高于 @EnableFeignClients 的全局配置。path:远程服务的统一前缀路径。例如服务接口都是 /api/user 开头,可设置 path = "/api/user",接口方法只需写相对路径(如 @GetMapping("/{id}") 对应 /api/user/{id})。Feign 接口的方法需使用 Spring MVC 注解声明 HTTP 请求细节,例如:
@GetMapping / @PostMapping / @PutMapping / @DeleteMapping:指定请求方法和路径。@PathVariable:获取 URL 路径参数(如 @GetMapping("/{id}") User getUser(@PathVariable("id") Long id))。@RequestParam:获取请求参数(如 @GetMapping("/list") List<User> getList(@RequestParam("status") Integer status))。@RequestBody:传递请求体(如 @PostMapping("/save") Boolean save(@RequestBody User user))。用于集成 Spring Cloud Config 配置中心,实现配置的集中管理和动态刷新。
/actuator/refresh 端点,标注该注解的类会重新实例化,加载新配置。@RestController
@RefreshScope // 配置更新时,该类会重新创建
public class ConfigController {
@Value("${app.name}")
Resilience4j 是 Spring Cloud 推荐的熔断组件(替代 Hystrix),提供熔断、重试、限流等功能,常用注解如下:
name:熔断器名称(需与配置文件中的规则对应,如 resilience4j.circuitbreaker.instances.<name>)。fallbackMethod:降级方法名(当前类中定义的方法,参数和返回值需与原方法一致,最后可加一个 Exception 参数接收异常)。@Service
public class UserService {
name:重试器名称(对应配置文件 resilience4j.retry.instances.<name>)。fallbackMethod:最终重试失败后的降级方法。resilience4j:
retry:
instances:
userService:
name:限流器名称(对应配置文件 resilience4j.ratelimiter.instances.<name>)。fallbackMethod:限流触发后的降级方法。resilience4j:
ratelimiter:
instances:
userService:
limitRefreshPeriod: 1s
RestTemplate 或 WebClient 开启负载均衡功能,使其在调用服务时,能通过服务名从注册中心获取实例列表,并按负载均衡策略(如轮询、随机)选择实例。@Configuration
public class RestTemplateConfig {
@Bean
@LoadBalanced
@SpringBootApplication(Spring Boot 基础注解) +
@EnableDiscoveryClient(服务发现) +
@EnableCircuitBreaker(熔断支持,Resilience4j 或 Hystrix)。@SpringCloudApplication // 替代三个注解
public class UserServiceApplication {
public static void main(String[] args) {
SpringApplication.run(UserServiceApplication.class, args);
}
}
Spring Cloud 注解按功能可分为服务注册发现、服务调用(Feign)、配置中心、熔断降级、负载均衡等类别。核心注解如 @FeignClient(服务调用)、@CircuitBreaker(熔断)、@LoadBalanced(负载均衡)等,需重点掌握其属性含义(如 @FeignClient 的 name 和 fallback)及使用场景,以简化微服务开发。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。