Spring boot注解介绍
1. Spring 核心注解
Spring Boot 是基于 Spring 框架的,所以核心注解依然适用。
✅ 常见核心注解
- 
@Component
表示一个通用组件,Spring 会自动扫描并注入到容器中。@Componentpublic class MyComponent { public void sayHello() { System.out.println(\"Hello from Component!\"); }} - 
@Service
表示业务逻辑层的组件(语义化,更适合 Service 层)。@Servicepublic class UserService { public String getUser() { return \"User\"; }} - 
@Repository
表示持久层的组件(DAO 层),会额外处理数据库相关异常。@Repositorypublic 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(默认按类型匹配)。@RestControllerpublic class HelloController { @Autowired private UserService userService;} 
2. Spring Boot 特有注解
✅ 启动 & 配置类
- 
@SpringBootApplication
Spring Boot 的核心启动注解,相当于:- 
@Configuration - 
@EnableAutoConfiguration - 
@ComponentScan 
@SpringBootApplicationpublic 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:开启事务管理。
@Servicepublic class OrderService { @Transactional public void createOrder() { // 数据库操作 }} - 
@Async:异步执行方法。
@Servicepublic class EmailService { @Async public void sendEmail(String to) { System.out.println(\"Sending email to \" + to); }} 
6. 测试相关注解
- 
@SpringBootTest:启动完整 Spring Boot 上下文。
 - 
@WebMvcTest:仅启动 Web 层。
 - 
@MockBean:模拟一个 Bean(用于单元测试)。
@SpringBootTestclass 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 注解 处理请求映射和参数绑定。
 - 
事务、异步、测试、条件注解 提供更高级的控制。
 


