Spring boot注解介绍

1. Spring 核心注解

Spring Boot 是基于 Spring 框架的,所以核心注解依然适用。

✅ 常见核心注解

  • @Component

    表示一个通用组件,Spring 会自动扫描并注入到容器中。

    复制代码
    @Component
    public class MyComponent {
        public void sayHello() {
            System.out.println("Hello from Component!");
        }
    }
  • @Service

    表示业务逻辑层的组件(语义化,更适合 Service 层)。

    复制代码
    @Service
    public class UserService {
        public String getUser() {
            return "User";
        }
    }
  • @Repository

    表示持久层的组件(DAO 层),会额外处理数据库相关异常。

    复制代码
    @Repository
    public class UserRepository {
        public void saveUser() {
            System.out.println("User saved");
        }
    }
  • @Controller / @RestController

    • @Controller:返回视图(模板引擎,如 Thymeleaf)。

    • @RestController:等价于 @Controller + @ResponseBody,返回 JSON 数据。

      @RestController
      @RequestMapping("/api")
      public class UserController {
      @GetMapping("/hello")
      public String hello() {
      return "Hello, Spring Boot!";
      }
      }

  • @Autowired

    自动注入 Bean(默认按类型匹配)。

    复制代码
    @RestController
    public class HelloController {
        @Autowired
        private UserService userService;
    }

2. Spring Boot 特有注解

✅ 启动 & 配置类

  • @SpringBootApplication

    Spring Boot 的核心启动注解,相当于:

    • @Configuration

    • @EnableAutoConfiguration

    • @ComponentScan

      @SpringBootApplication
      public class MyApplication {
      public static void main(String[] args) {
      SpringApplication.run(MyApplication.class, args);
      }
      }

  • @EnableAutoConfiguration

    开启自动配置(Spring Boot 会根据依赖自动配置 Bean)。

  • @ConfigurationProperties

    将配置文件(application.yml / application.properties)绑定到 Java 类上。

    复制代码
    @Component
    @ConfigurationProperties(prefix = "app")
    public class AppProperties {
        private String name;
        private String version;
        // getter/setter
    }
  • @Value

    直接注入配置属性。

    复制代码
    @Value("${app.name}")
    private String appName;

3. Web 注解

✅ 请求映射

  • @RequestMapping:定义路径映射,可用于类和方法。

  • @GetMapping / @PostMapping / @PutMapping / @DeleteMapping:更具体的 HTTP 方法注解。

    复制代码
    @RestController
    @RequestMapping("/users")
    public class UserController {
        @GetMapping("/{id}")
        public String getUser(@PathVariable Long id) {
            return "User " + id;
        }
    }

✅ 参数绑定

  • @PathVariable:获取路径参数。

  • @RequestParam:获取请求参数(?key=value)。

  • @RequestBody:绑定请求体 JSON 到对象。

  • @RequestHeader:获取请求头。

    复制代码
    @PostMapping("/create")
    public String createUser(@RequestBody User user,
                             @RequestHeader("token") String token) {
        return "User created: " + user.getName() + ", token=" + token;
    }

4. 数据验证注解(JSR-303)

常用于参数校验,结合 @Valid@Validated 使用。

  • @NotNull:不能为空

  • @NotBlank:字符串不能为空

  • @Size(min, max):限制长度

  • @Email:校验邮箱

  • @Pattern:正则校验

    复制代码
    public class UserDTO {
        @NotBlank(message = "用户名不能为空")
        private String username;
        
        @Email(message = "邮箱格式不正确")
        private String email;
    }
    
    @PostMapping("/register")
    public String register(@Valid @RequestBody UserDTO user) {
        return "注册成功";
    }

5. 事务 & 异步

  • @Transactional:开启事务管理。

    复制代码
    @Service
    public class OrderService {
        @Transactional
        public void createOrder() {
            // 数据库操作
        }
    }
  • @Async:异步执行方法。

    复制代码
    @Service
    public class EmailService {
        @Async
        public void sendEmail(String to) {
            System.out.println("Sending email to " + to);
        }
    }

6. 测试相关注解

  • @SpringBootTest:启动完整 Spring Boot 上下文。

  • @WebMvcTest:仅启动 Web 层。

  • @MockBean:模拟一个 Bean(用于单元测试)。

    复制代码
    @SpringBootTest
    class UserServiceTest {
        @Autowired
        private UserService userService;
    }

7. 条件注解(高级用法)

Spring Boot 提供条件装配,按环境决定是否加载 Bean。

  • @ConditionalOnProperty:配置属性满足条件时加载。

  • @ConditionalOnMissingBean:当容器中没有某个 Bean 时才加载。

  • @Profile :指定环境下生效(如 dev, prod)。

    复制代码
    @Service
    @Profile("dev")
    public class DevUserService implements UserService {}
    
    @Service
    @Profile("prod")
    public class ProdUserService implements UserService {}

8. 其他常用注解

  • @Bean :在 @Configuration 类中定义 Bean。

  • @Primary:多个 Bean 时,标记优先注入。

  • @Qualifier:按名称指定 Bean。

  • @Order:指定加载顺序。


👉 总结:

  • 核心注解(@Component, @Service, @Controller...)用于 Bean 管理。

  • Spring Boot 特有注解(@SpringBootApplication, @ConfigurationProperties...)用于简化配置。

  • Web 注解 处理请求映射和参数绑定。

  • 事务、异步、测试、条件注解 提供更高级的控制。

相关推荐
云上小朱18 分钟前
开发测试环境-Kubernetes离线部署指南
后端
遨翔在知识的海洋里27 分钟前
nestjs(1)-模块的相互调用
后端
Profile排查笔记29 分钟前
指纹浏览器推荐:用一套验收清单筛选 Profile、代理与自动化能力
前端·人工智能·后端·自动化
jsl_jsl_jsl29 分钟前
JUC速记
后端
摇滚侠33 分钟前
《SpringBoot 3:入门与应用实战》第 12 章 JDBC 与事务 使用 JdbcTemplate 阅读笔记 31
android·spring boot·笔记
站大爷IP34 分钟前
Python的pip依赖把我折腾惨了,原来requirements.txt和poetry能打出火星撞地球
后端
torpidcat38 分钟前
ruoyi-vue-pro 若依芋道 java springboot +mybatis 生日查询相关
java·vue.js·spring boot
狗哥哥1 小时前
用“十步学习法”带你学会事件驱动架构
后端
AC赳赳老秦1 小时前
文旅市场公开数据分析:基于 OpenClaw 采集景区客流与门票公示数据,生成区域文旅热度监测报告
java·c语言·python·php·symfony·deepseek·openclaw
挽安6211 小时前
Spring Boot自动配置原理:从@EnableAutoConfiguration源码一步步看懂
后端