引言
掌握SpringBoot的常用注解不仅能够提高开发效率,还能编写出更加简洁、优雅的代码。
1. 类级别注解
@SpringBootApplication
这是SpringBoot项目最常用的注解,实际上是三个注解的组合:
@Configuration:表明这是一个配置类@EnableAutoConfiguration:开启自动配置@ComponentScan:开启组件扫描
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
// 启动SpringBoot应用
SpringApplication.run(MyApplication.class, args);
}
}
@Configuration
标记一个类作为Bean定义的配置类。可以在类中通过@Bean注解来手动注册Bean。
@Configuration
public class AppConfig {
@Bean
public UserService userService() {
return new UserServiceImpl();
}
}
2. 依赖注入注解
@Autowired
最常用的依赖注入注解,可以自动装配Bean。
@Service
public class UserServiceImpl implements UserService {
// 自动注入UserRepository
@Autowired
private UserRepository userRepository;
}
@Qualifier
当存在多个同类型Bean时,可以通过@Qualifier指定具体要注入的Bean。
@Service
public class UserServiceImpl {
@Autowired
@Qualifier("primaryUserRepository")
private UserRepository userRepository;
}
@Resource
Java标准注解,默认按名称注入,可以替代@Autowired。
public class UserController {
@Resource(name = "userServiceImpl")
private UserService userService;
}
3. 请求处理注解
@RestController
组合了@Controller和@ResponseBody,用于构建RESTful风格的API。
@RestController
@RequestMapping("/users")
public class UserController {
@GetMapping("/{id}")
public User getUserById(@PathVariable Long id) {
return userService.getUserById(id);
}
}
常用请求映射注解
@GetMapping:处理GET请求@PostMapping:处理POST请求@PutMapping:处理PUT请求@DeleteMapping:处理DELETE请求
@RestController
@RequestMapping("/products")
public class ProductController {
@GetMapping
public List<Product> listProducts() {
return productService.getAllProducts();
}
@PostMapping
public Product createProduct(@RequestBody Product product) {
return productService.saveProduct(product);
}
}
@RequestParam
获取HTTP请求参数
@GetMapping("/search")
public List<User> searchUsers(@RequestParam String keyword) {
return userService.searchUsersByKeyword(keyword);
}
4. 数据校验注解
@Valid
开启数据验证,通常与@RequestBody一起使用。
public class User {
@NotBlank(message = "用户名不能为空")
private String username;
@Email(message = "邮箱格式不正确")
private String email;
}
@PostMapping
public Result createUser(@Valid @RequestBody User user) {
// 自动校验参数
userService.createUser(user);
}
5. 事务管理注解
@Transactional
声明式事务管理,简化数据库事务处理。
@Service
public class OrderServiceImpl {
@Autowired
private OrderRepository orderRepository;
@Transactional(rollbackFor = Exception.class)
public void createOrder(Order order) {
// 自动管理事务,出现异常会回滚
orderRepository.save(order);
// 其他业务逻辑
}
}
6. 条件注解
@ConditionalOnProperty
根据配置项动态决定是否加载Bean。
@Configuration
public class CacheConfig {
@Bean
@ConditionalOnProperty(
name = "cache.enabled",
havingValue = "true"
)
public CacheManager cacheManager() {
return new ConcurrentMapCacheManager();
}
}
7. 异常处理注解
@ControllerAdvice
全局异常处理。
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntity<String> handleException(Exception e) {
return ResponseEntity.status(500).body(e.getMessage());
}
}
结语
掌握这些SpringBoot注解,不仅能够大大简化代码,还能提高开发效率。注解的魔力在于它们能够通过极少的代码实现复杂的功能。建议读者在实践中不断积累,深入理解每个注解的使用场景和底层原理。
公众号:trymoLiu
欢迎各位看官老爷前来关注~