springboot常用的注解需要了解,开发必备

好的,Spring Boot 的注解体系是其"约定大于配置"理念的核心体现。下面我将这些注解分为几大类,并附上解释和示例,方便你理解和记忆。

一、项目启动与核心配置注解

这些是 Spring Boot 应用的基石。

注解 作用 示例
@SpringBootApplication ​核心注解​ ​,用于主类。是 @SpringBootConfiguration@EnableAutoConfiguration@ComponentScan的组合注解。标记此为启动类。 @SpringBootApplication public class MyApplication { ... }
@SpringBootTest ​测试注解​​,用于测试类。会启动一个用于测试的 Spring 应用上下文(容器)。 @SpringBootTest class MyServiceTest { ... }
@Configuration 标记一个类为​​配置类​ ​,相当于一个 XML 配置文件,内部可声明 @Bean @Configuration public class AppConfig { ... }
@ConfigurationProperties 将配置文件(如 application.yml)中的属性批量绑定到一个 Java Bean 上。 @ConfigurationProperties(prefix = "app.datasource") public class DataSourceProps { ... }
@Value ​属性注入​​,直接将配置文件中的某个属性值注入到字段中。 @Value("${app.page-size}") private int pageSize;

二、定义 Bean 及依赖注入的注解

这些注解用于创建和组装组件。

注解 作用 示例
@Component ​通用注解​​,标记一个类为 Spring 的组件(Bean),会被容器扫描并创建实例。 @Component public class MyService { ... }
@Service ​语义化注解​ ​,功能同 @Component,但通常用于标注​​业务逻辑层​​(Service 层)的类。 @Service public class UserServiceImpl { ... }
@Repository ​语义化注解​ ​,功能同 @Component,但通常用于标注​​数据访问层​​(DAO 层)的类。会自动处理数据库异常。 @Repository public class UserRepository { ... }
@Controller 标记一个类为 ​​Spring MVC 控制器​​,主要用于接收 Web 请求。 @Controller public class UserController { ... }
@RestController @Controller@ResponseBody的组合注解​​。标记的类所有方法返回的数据都直接写入响应体(JSON/XML),用于构建 RESTful API。 @RestController public class UserApiController { ... }
@Autowired ​依赖注入​​,自动按照类型(byType)注入依赖。可用于字段、setter 方法、构造方法。 @Autowired private UserService userService;
@Bean 通常在配置类(@Configuration)中使用,​​方法级别注解​​。将方法返回的对象声明为一个 Bean,交于 Spring 容器管理。 @Bean public RestTemplate restTemplate() { return new RestTemplate(); }

三、Web MVC 相关注解(Controller 层)

这些注解用于处理 HTTP 请求和响应。

注解 作用 示例
@RequestMapping ​映射请求​​,将 HTTP 请求映射到 MVC 控制器的方法上。可简化如下注解。 @RequestMapping("/api/users")
@GetMapping 映射 ​​HTTP GET​​ 请求。 @GetMapping("/{id}") public User getUser(@PathVariable Long id) { ... }
@PostMapping 映射 ​​HTTP POST​​ 请求。 @PostMapping public User createUser(@RequestBody User user) { ... }
@PutMapping 映射 ​​HTTP PUT​​ 请求。 @PutMapping("/{id}") ...
@DeleteMapping 映射 ​​HTTP DELETE​​ 请求。 @DeleteMapping("/{id}") ...
@PathVariable 将 ​​URL 模板变量​​绑定到方法参数。 getUser(@PathVariable("id") Long userId)
@RequestParam 将​​请求参数​ ​(如 ?name=John)绑定到方法参数。 getUsers(@RequestParam(defaultValue="0") int page)
@RequestBody 将 ​​HTTP 请求体​​(如 JSON)绑定到方法参数对象。 createUser(@RequestBody @Valid User user)
@ResponseBody 将方法返回值直接写入 HTTP 响应体,而不是视图解析。 @ResponseBody public User getUser() { ... }
@RestControllerAdvice ​全局异常处理​ ​,结合 @ExceptionHandler使用,用于统一处理控制器层的异常。 @RestControllerAdvice public class GlobalExceptionHandler { ... }

四、数据访问相关注解(DAO 层)

主要用于 Spring Data JPA 或 MyBatis。

注解 作用 示例
@Entity JPA 注解,标记一个类为​​数据库实体​​,对应一张表。 @Entity @Table(name = "users") public class User { ... }
@Id JPA 注解,声明实体类的主键字段。 @Id private Long id;
@Repository 如上所述,用于 DAO 层组件。
@Transactional ​声明式事务管理​​,标记方法或类需要事务支持。 @Transactional public void updateUser(User user) { ... }

五、其他常用注解

注解 作用 示例
@Profile ​环境切换​​,指定某个 Bean 或配置只在特定环境(如 dev, test, prod)下生效。 @Bean @Profile("dev") public DataSource devDataSource() { ... }
@ConditionalOnProperty ​条件化配置​​,根据配置文件中的属性值来决定是否创建某个 Bean。 @Bean @ConditionalOnProperty(name = "app.feature.cache", havingValue = "true") public CacheManager cacheManager() { ... }
@Valid ​参数校验​ ​,与 @RequestBody等配合使用,触发对对象属性的校验规则(如 @NotNull, @Email)。 createUser(@RequestBody @Valid User user)
@Slf4j ​Lombok 注解​ ​,为类自动注入一个 log对象,用于日志记录。需安装 Lombok 插件。 @Slf4j @RestController public class MyController { ... log.info("This is a log."); }

总结

要快速掌握,可以记住这个核心流程:

  1. ​启动​ ​:主类上用 @SpringBootApplication

  2. ​定义 Bean​​:

    • Controller 用 @RestController
    • Service 用 @Service
    • Dao 用 @Repository
    • 配置类用 @Configuration@Bean
  3. ​注入 Bean​ ​:在需要的地方用 @Autowired

  4. ​处理 Web 请求​ ​:在 Controller 的方法上用 @GetMapping/@PostMapping等,参数用 @PathVariable/@RequestBody

  5. ​操作数据​ ​:在 Service 方法上用 @Transactional保证事务。

建议你边学边练,创建一个简单的 Spring Boot 项目(比如一个 User 的 CRUD 接口),把这些注解实际用一遍,理解会深刻得多。

相关推荐
间彧35 分钟前
Spring事件监听与消息队列(如Kafka)在实现解耦上有何异同?
后端
间彧38 分钟前
Java如何自定义事件监听器,有什么应用场景
后端
叶梅树40 分钟前
从零构建A股量化交易工具:基于Qlib的全栈系统指南
前端·后端·算法
间彧1 小时前
CopyOnWriteArrayList详解与SpringBoot项目实战
后端
间彧1 小时前
SpringBoot @FunctionalInterface注解与项目实战
后端
程序员小凯1 小时前
Spring Boot性能优化详解
spring boot·后端·性能优化
Asthenia04121 小时前
问题复盘:飞书OAuth登录跨域Cookie方案探索与实践
后端
tuine1 小时前
SpringBoot使用LocalDate接收参数解析问题
java·spring boot·后端
W.Buffer1 小时前
Nacos配置中心:SpringCloud集成实践与源码深度解析
后端·spring·spring cloud
冼紫菜2 小时前
[特殊字符] 深入理解 PageHelper 分页原理:从 startPage 到 SQL 改写全过程
java·后端·sql·mysql·spring