SpringBoot常用注解
一、核心启动注解
@SpringBootApplication
用在主启动类上,是以下三个注解的组合:
-
@SpringBootConfiguration
:标记当前类为配置类(继承自@Configuration
) -
@EnableAutoConfiguration
:启用自动配置(根据依赖自动配置Bean) -
@ComponentScan
:扫描当前包及子包下的组件(@Component
,@Service
等)
@SpringBootApplication
public class MyApp { public static void main(String[] args) { SpringApplication.run(MyApp.class, args); }
}
二、Bean声明与作用域
注解 | 用途 | 示例 |
---|---|---|
@Component | 通用组件注解,标记为Spring管理的Bean | @Component public class MyUtil { ... } |
@Service | 业务层组件(@Component 的特化) | @Service public class UserService { ... } |
@Repository | 数据访问层组件(DAO层) | @Repository public class UserDao { ... } |
@Controller /@RestController | 控制层组件(后者= @Controller + @ResponseBody ) | @RestController public class UserController { ... } |
@Configuration | 声明配置类,内部用@Bean 定义Bean |
@Configuration
public class AppConfig { @Bean public DataSource dataSource() { ... } // 返回Bean对象
}
| @Scope
| 指定Bean作用域(如 singleton
, prototype
) | @Bean @Scope("prototype") public Task task() { ... }
|
三、依赖注入(DI)注解
1 @Autowired
按类型自动注入Bean(默认必须存在,加required=false
可忽略)
@Service
public class UserService { @Autowired // 注入UserDao实例 private UserDao userDao;
}
2 @Resource
按名称注入Bean(JDK提供,支持name
属性指定Bean名)
@RestController
public class UserController { @Resource(name = "userService") private UserService userService;
}
3 @Qualifier
与@Autowired配合,按名称指定注入哪个Bean(解决多个同类型Bean冲突)
@Autowired
@Qualifier("mysqlService") // 注入名为mysqlService的Bean
private DbService dbService;
对比:
@Autowired + @Qualifier = 按类型+名称注入
@Resource = 直接按名称注入(无需搭配)
四、Web请求处理注解
路由映射
注解 | 等价写法 | 用途 |
---|---|---|
@GetMapping("/path") | @RequestMapping(method=RequestMethod.GET) | 处理GET请求 |
@PostMapping("/path") | @RequestMapping(method=RequestMethod.POST) | 处理POST请求 |
@PutMapping | - | 处理PUT请求(更新资源) |
@DeleteMapping | - | 处理DELETE请求 |
参数获取
注解 | 用途 | 示例 |
---|---|---|
@PathVariable | 从URL路径获取参数 | @GetMapping("/user/{id}") public User getById(@PathVariable Long id) { ... } |
@RequestParam | 从URL查询参数获取值 | @GetMapping("/list") public List<User> list(@RequestParam("page") int page) { ... } |
@RequestBody | 解析请求体为Java对象(如JSON) | @PostMapping("/create") public void create(@RequestBody User user) { ... } |
@ResponseBody | 将方法返回值转为JSON响应体 | 已内置于@RestController |
五、配置与属性注入
1 . @Value
注入单个配置项(application.properties/yml中的值)
@Value("${app.page.size}")
private int pageSize; // 注入app.page.size=10
2. @ConfigurationProperties
批量绑定配置到Java对象(推荐)
@Component
@ConfigurationProperties(prefix = "app")
public class AppConfig { private String name; private int version; // 必须有setter方法
}
# application.properties
app.name=MyApp
app.version=1.0
3. @PropertySource
加载自定义配置文件
@Configuration
@PropertySource("classpath:custom.properties")
public class CustomConfig { ... }
六、高级功能注解
1. @Transactional
声明事务管理(方法/类级别)
@Service
public class OrderService { @Transactional public void createOrder(Order order) { ... }
}
2. 全局异常处理
@ControllerAdvice // 全局控制器增强
public class GlobalExceptionHandler { @ExceptionHandler(Exception.class) // 捕获所有异常 public ResponseEntity<String> handleException(Exception e) { return ResponseEntity.status(500).body(e.getMessage()); }
}
3. 定时任务
@EnableScheduling // 主类启用定时任务
@Component
public class MyTask { @Scheduled(fixedRate = 5000) // 每5秒执行 public void job() { ... }
}
对比相似注解:
- Autowired vs @Resource
- @Controller vs @RestController
- @Value vs @ConfigurationProperties
一文掌握 Spring Boot 常用注解,保姆级整理,建议收藏!
SpringBoot常用注解与注意事项-腾讯云开发者社区-腾讯云
Spring Boot 常用注解汇总 - overfit.cn