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 表达式的结果来决定是否启用某个配置。