Spring Cloud 作为微服务架构的主流解决方案,提供了丰富的注解简化开发流程。这些注解覆盖服务注册发现、配置管理、负载均衡、熔断降级等核心场景,极大提升了微服务开发效率。
服务注册与发现
@EnableEurekaServer
用于启动 Eureka 服务注册中心,标注在 Spring Boot 启动类上,开启服务注册与发现功能。
@EnableDiscoveryClient
通用的服务发现注解,适用于 Eureka、Consul、Zookeeper 等多种注册中心,标注后服务会自动注册到注册中心。
@EurekaClient
专用于 Eureka 的客户端注解,功能与 @EnableDiscoveryClient 类似,但仅支持 Eureka 注册中心。
服务调用与负载均衡
@LoadBalanced
标注在 RestTemplate 实例上,使其具备负载均衡能力,自动从注册中心获取服务列表并分发请求。
java
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
@FeignClient
声明式服务调用注解,用于创建服务接口的代理对象,实现跨服务调用。value 属性指定服务名称。
java
@FeignClient(value = "user-service")
public interface UserServiceClient {
@GetMapping("/users/{id}")
User getUserById(@PathVariable("id") Long id);
}
服务熔断与降级
@EnableCircuitBreaker
开启断路器功能,通常与 @SpringBootApplication 组合使用,启用服务熔断机制。
@HystrixCommand
标注在服务方法上,指定熔断后的降级方法,当服务调用超时或失败时执行 fallback 逻辑。
java
@HystrixCommand(fallbackMethod = "getUserFallback")
public User getUser(Long id) {
return restTemplate.getForObject("http://user-service/users/" + id, User.class);
}
public User getUserFallback(Long id) {
return new User(id, "默认用户", "服务暂时不可用");
}
配置中心
@EnableConfigServer
启动配置中心服务端,用于集中管理各环境的配置文件,支持 Git、SVN 等仓库存储。
@RefreshScope
标注在需要动态刷新配置的类上,结合 Spring Cloud Config 实现配置修改后无需重启服务即可生效。
java
@RestController
@RefreshScope
public class ConfigController {
@Value("${app.version}")
private String version;
@GetMapping("/version")
public String getVersion() {
return version;
}
}
API 网关
@EnableZuulProxy
启用 Zuul 网关代理功能,实现请求路由、过滤、负载均衡等功能,是微服务的入口点。
@Component + ZuulFilter
自定义 Zuul 过滤器需要继承 ZuulFilter 并标注 @Component,实现请求的预处理或后处理。
服务熔断监控
@EnableHystrixDashboard
开启 Hystrix 仪表盘,可视化展示各服务的熔断状态、响应时间等指标。
@EnableTurbine
整合多个 Hystrix 仪表盘的数据,集中监控集群中的所有服务状态。
服务安全
@EnableResourceServer
将服务标记为资源服务器,结合 Spring Security OAuth2 实现基于令牌的访问控制。
@PreAuthorize
方法级别的权限控制注解,指定访问方法所需的权限,如:
java
@PreAuthorize("hasRole('ADMIN')")
@GetMapping("/users")
public List getAllUsers() {
// 管理员才能访问的逻辑
}
这些注解构成了 Spring Cloud 微服务开发的基础工具集,掌握它们能有效简化服务治理、提高系统可靠性。实际开发中,需根据具体业务场景合理组合使用,构建弹性、可扩展的微服务架构。