原创

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;
}

@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;
}

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
  • 作者:一介闲人(联系作者)
  • 发表时间: 2024-12-13 10:44
  • 版权声明:原创-转载需保持署名
  • 公众号转载:请在文末添加本文链接
  • 评论