
一介闲人
一介闲人
@SpringBootApplication
这是SpringBoot项目最常用的注解,实际上是三个注解的组合:
@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();
}
}
@Autowired
最常用的依赖注入注解,可以自动装配Bean。
@Service
public class UserServiceImpl implements UserService {
// 自动注入UserRepository
@Autowired
private UserRepository userRepository;
}
@Resource
Java标准注解,默认按名称注入,可以替代@Autowired。
public class UserController {
@Resource(name = "userServiceImpl")
private UserService userService;
}
@Qualifier
当存在多个同类型Bean时,可以通过@Qualifier指定具体要注入的Bean。
@Service
public class UserServiceImpl {
@Autowired
@Qualifier("primaryUserRepository")
private UserRepository userRepository;
}
@RestController
组合了@Controller和@ResponseBody,用于构建RESTful风格的API。
@RestController
@RequestMapping("/users")
public class UserController {
@GetMapping("/{id}")
public User getUserById(@PathVariable Long id) {
return userService.getUserById(id);
}
}
常用请求映射注解
@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);
}
@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);
}
@Transactional
声明式事务管理,简化数据库事务处理。
@Service
public class OrderServiceImpl {
@Autowired
private OrderRepository orderRepository;
@Transactional(rollbackFor = Exception.class)
public void createOrder(Order order) {
// 自动管理事务,出现异常会回滚
orderRepository.save(order);
// 其他业务逻辑
}
}
@ConditionalOnProperty
根据配置项动态决定是否加载Bean。
@Configuration
public class CacheConfig {
@Bean
@ConditionalOnProperty(
name = "cache.enabled",
havingValue = "true"
)
public CacheManager cacheManager() {
return new ConcurrentMapCacheManager();
}
}
@ControllerAdvice
全局异常处理。
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntity<String> handleException(Exception e) {
return ResponseEntity.status(500).body(e.getMessage());
}
}
评论