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 接口),把这些注解实际用一遍,理解会深刻得多。

相关推荐
RoyLin3 小时前
C++ 基础与核心概念
前端·后端·node.js
aiopencode3 小时前
Charles 抓包 HTTPS 原理详解,从 CONNECT 到 SSL Proxying、常见问题与真机调试实战(含 Sniffmaster 补充方案)
后端
泉城老铁3 小时前
springboot 框架集成工作流的开源框架有哪些呢
spring boot·后端·工作流引擎
aloha_3 小时前
Ubuntu/Debian 系统中,通过包管理工具安装 Redis
后端
Java水解3 小时前
深入探索Spring:Bean管理与Spring Boot自动配置原理
后端·spring
我是天龙_绍3 小时前
iframe 的 src 链接里带了参数(比如 token 或签名),想在 Nginx 层做鉴权
后端
大佐不会说日语~3 小时前
若依框架 (Spring Boot 3) 集成 knife4j 实现 OpenAPI 文档增强
spring boot·后端·python
Java微观世界3 小时前
枚举不止是常量!Java枚举的高级用法与单例最佳实践
后端
hhh小张3 小时前
HttpServlet(4):Cookie🍪与Session💻
后端