Spring Boot 中常用的一些注解及其作用如下所示:
-
@SpringBootApplication:标注一个主程序类,用于启动 Spring Boot 应用,通常放在包的最顶层。 -
@RestController:结合@Controller和@ResponseBody,用于定义 RESTful 服务端控制器。 -
@GetMapping、@PostMapping、@PutMapping、@DeleteMapping:分别表示处理 HTTP 的 GET、POST、PUT、DELETE 请求的方法,用于映射请求 URL 到具体的处理方法。 -
@PathVariable:用于将 URL 中的模板变量映射到方法参数中。 -
@RequestParam:用于从请求参数中获取值,映射到方法参数中。 -
@Autowired:自动装配 Bean,可以在构造方法、属性上使用。 -
@Service、@Component、@Repository、@Controller:用于定义服务类、组件类、数据访问类和控制器类,Spring 会自动扫描并注册这些类为 Bean。 -
@Configuration:用于定义配置类,主要用于配置 Bean。 -
@Value:注入配置文件中的属性值。 -
@Qualifier:指定 Bean 的名称进行注入。 -
@ConditionalOnProperty:根据配置文件中的属性值来决定是否装配 Bean。 -
@EnableAutoConfiguration:启用自动配置,Spring Boot 会根据依赖自动配置应用的各种默认行为。 -
@Async:表明被注解的方法是一个异步方法,可单独开启一个线程来执行。 -
@Bean:在 Java 配置类中使用,用于定义 Bean,Spring 容器会根据该注解创建 Bean 对象并放入容器中。 -
@ConfigurationProperties:将配置文件中的属性值和 Bean 的属性进行绑定,通常与@Configuration结合使用。 -
@EnableScheduling:启用定时任务的注解,使得@Scheduled注解等生效。 -
@Transactional:用于声明事务性方法,使得方法具有事务性,通常用在 Service 层的方法上。 -
@Valid:用于表示需要验证的方法参数,结合 Hibernate Validator 进行方法参数的校验。 -
@PreAuthorize、@PostAuthorize、@Secured:用于方法级的安全控制,进行访问权限的控制。 -
@CrossOrigin:用于处理跨域请求,可以在 Controller 类或方法上添加该注解。 -
@Entity、@Table、@Column:用于 JPA 实体类与数据库表的映射关系。 -
@Scheduled:用于定时调度任务,可以指定方法定时执行的规则,例如固定间隔、固定延迟等。 -
@RequestMapping:用于映射 HTTP 请求到处理方法上,可以指定请求的 URL、请求方法等属性。 -
@ExceptionHandler:用于处理Controller内部异常,可以在方法中捕获特定异常并进行处理。 -
@ResponseStatus:用于定义处理特定异常时返回的 HTTP 状态码。 -
@ResponseBody:将方法返回值直接以 JSON 或 XML 格式写入 HTTP 响应体中。 -
@RequestBody:用于接收 HTTP 请求体中的数据,并将其转换成对象。 -
@EnableCaching:启用缓存支持,可以在方法上使用@Cacheable、@CachePut、@CacheEvict注解来实现缓存功能。 -
@EnableTransactionManagement:开启事务管理支持,可以在 Service 层的方法上使用@Transactional注解管理事务。 -
@ComponentScan:用于指定要扫描的包路径,Spring Boot 将会扫描该包及其子包下的所有组件。 -
@PropertySource:用于加载指定的属性源,可以指定加载的配置文件路径。 -
@Profile:根据当前环境激活对应的配置文件或 Bean。 -
@EventListener:监听 Spring 应用中的事件,可以在方法中处理特定的事件。 -
@EnableSwagger2:集成 Swagger2 生成 API 文档。 -
@EnableFeignClients:启用 Feign 客户端,用于简化调用其他 REST 服务的过程。 -
@EnableDiscoveryClient:启用服务注册与发现功能,用于与服务注册中心进行通信。 -
@EnableEurekaClient:声明当前应用是 Eureka 服务注册中心的客户端。 -
@EnableHystrix:启用 Hystrix 断路器,用于处理服务容错和降级。 -
@EnableZuulProxy:启用 Zuul 网关,用于统一访问和路由请求。 -
@EntityScan:用于指定实体类的扫描路径,通常与 JPA 搭配使用。 -
@EnableJpaRepositories:启用 JPA 仓库功能,用于扫描和管理 JPA Repository 接口。 -
@EnableAsync:启用异步方法执行功能,可以配合@Async使用。 -
@EnableBatchProcessing:启用 Spring 批处理功能。 -
@EnableWebMvc:用于自定义 Spring MVC 配置,并且要保留默认的配置。 -
@EnableWebFlux:启用 WebFlux 配置,支持响应式编程。 -
@ConditionalOnProperty:根据配置文件中的属性值来决定是否启用某个配置。 -
@ConditionalOnClass、@ConditionalOnMissingClass:根据类路径上是否存在某个类来决定是否启用或禁用某个配置。 -
@ConditionalOnBean、@ConditionalOnMissingBean:根据是否存在某个 Bean 来决定是否启用或禁用某个配置。 -
@ConditionalOnExpression:根据 SpEL 表达式的结果来决定是否启用某个配置。










