注解一览表
启动类以及配置类相关
@SpringBootApplication
解释:
- @SpringBootApplication是组合注解。相当于@Configuration、@EnableAutoConfiguration、@ComponentScan的组合。
- 用于标记启动类,指出应用入口。
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
@Configuration
解释:
- 声明当前类为配置类。相当于xml配置中的beans标签。
@Configuration
public class MyConfig {
@Bean
public MyBean myBean() {
return new MyBean();
}
}
@EnableAutoConfiguration
解释:
- 开启SpringBoot自动装配功能。
@SpringBootApplication
@EnableAutoConfiguration
public class MyApplication {
// ...
}
@ComponentScan
解释:
- 配置SpringBoot扫描包路径。
@SpringBootApplication
@ComponentScan("com.example")
public class MyApplication {
// ...
}
控制层相关
@RestController
解释:
- @RestController注解用于定义控制器类,将其返回的结果自动转换为JSON格式
@RestController
public class UserController {
@GetMapping("/users")
public List getAllUsers() {
// 返回所有用户列表的逻辑
}
}
@RequestMapping
解释:
- 用于映射HTTP请求到处理器上,指定处理器方法的URL路径和HTTP请求方法。
@RestController
@RequestMapping("/users")
public class UserController {
@GetMapping("/{id}")
public User getUserById(@PathVariable("id") Long id) {
// 根据id获取用户的逻辑
}
}
@GetMapping、@PostMapping、@DeleteMapping、@PutMapping
解释:
- @GetMapping注解用于处理HTTP的GET请求,并将请求映射到相应的处理器方法上。
- @PostMapping注解用于处理HTTP的POST请求,并将请求映射到相应的处理器方法上。
- @DeleteMapping注解用于处理HTTP的DELETE请求,并将请求映射到相应的处理器方法上。
- @PutMapping是Spring框架中用于处理HTTP的PUT请求的注解。PUT请求通常用于更新资源,即将新的数据替换掉指定的资源。
@RestController
@RequestMapping("/users")
public class UserController {
@GetMapping("/{id}")
public User getUserById(@PathVariable("id") Long id) {
// 根据id获取用户的逻辑
}
}
@RestController
@RequestMapping("/users")
public class UserController {
@PostMapping
public User createUser(@RequestBody User user) {
// 创建用户的逻辑
}
}
@RestController
@RequestMapping("/users")
public class UserController {
@DeleteMapping("/{id}")
public void deleteUser(@PathVariable("id") Long id) {
// 删除用户的逻辑
}
}
@RestController
@RequestMapping("/users")
public class UserController {
@PutMapping("/{id}")
public User updateUser(@PathVariable("id") Long id, @RequestBody User user) {
// 更新用户信息的逻辑
}
}
@RequestParam
解释:
- @RequestParam注解用于获取请求参数的值,并将其绑定到处理器方法的形参上。一般用于路径中?传参形式。
@RestController
@RequestMapping("/users")
public class UserController {
@GetMapping
public List getUsersByPage(@RequestParam("page") int page,
@RequestParam(value = "size", defaultValue = "10") int size) {
// 分页查询用户列表的逻辑
}
}
@PathVariable
解释:
- 用于获取URL路径中的变量值,并将其绑定到处理器方法的形参上。一般用于/传参的形式。
@RestController
@RequestMapping("/users")
public class UserController {
@GetMapping("/{id}")
public User getUserById(@PathVariable("id") Long id) {
// 根据id获取用户的逻辑
}
}
@RequestBody
解释:
- 用于接收HTTP请求的请求体内容,并将其转化为对应的Java对象或其他类型的参数。
@RestController
@RequestMapping("/users")
public class UserController {
@PostMapping
public User createUser(@RequestBody User user) {
// 创建用户的逻辑
}
}
@Valid
解释:
- @Valid用于开启数据验证功能,对方法参数进行校验,确保其满足定义的验证规则
@RestController
@RequestMapping("/users")
public class UserController {
@PostMapping
public ResponseEntity createUser(@Valid @RequestBody User user) {
// 创建用户的逻辑
return ResponseEntity.status(HttpStatus.CREATED).body(user);
}
}
Bean管理相关
- @Autowired: 自动装配,用于自动注入依赖的Bean实例。
- @Service: 用于标识一个服务类,表示它是业务逻辑层的组件。
- @Repository: 用于标识一个数据访问类,表示它是数据访问层的组件。
- @Component: 通用的Spring组件注解,用于标识一个普通的Bean组件。
- @Value: 注入配置文件中的值到对应的变量中。
异步和定时相关
@EnableScheduling、@Scheduled
解释:
- @EnableScheduling:启动类添加@EnableScheduling开启任务调度功能。
- @Scheduled:定时任务注解,用于标识定时任务的方法。
@SpringBootApplication
@EnableScheduling
public class MyApp {
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
}
@Component
public class MyScheduler {
@Scheduled(fixedRate = 5000)
public void myTask() {
// 每个5秒执行一次的任务逻辑
}
}
@Component
public class MyScheduler {
@Scheduled(cron = "0 0 8 * * ?")
public void myTask() {
// 每天早上8点执行的任务逻辑
}
}
@EnableAsync、@Async
解释:
- @EnableAsync:启动类添加,开启异步任务。
- @Async:标识异步任务方法。
@SpringBootApplication
@EnableAsync
public class MyApp {
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
}
@Service
public class MyService {
@Async
public CompletableFuture asyncTask() {
// 异步执行的任务逻辑
// 返回一个CompletableFuture以支持异步结果的处理
}
}
缓存和事务管理
解释:
- @EnableCaching: 开启Spring的缓存支持,用于缓存方法的结果,提高性能。
- @Transactional: 提供声明式事务管理,用于标识需要使用事务的方法或类。
- @EnableTransactionManagement: 开启事务管理支持,用于启用Spring的声明式事务管理功能
@SpringBootApplication
@EnableCaching
@EnableTransactionManagement
public class MyApp {
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
}
@Service
public class MyService {
@Transactional
public void performTransaction() {
// 执行数据库操作等需要事务管理的逻辑
}
}
异常处理相关
@RestControllerAdvice、@ExceptionHandler
- @RestControllerAdvice:结合了@ControllerAdvice和@ResponseBody注解的功能。它用于定义全局的异常处理和统一的响应处理。
- @ExceptionHandler:指定类型的异常进行统一处理。
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntity handleException(Exception e) {
// 异常处理逻辑,可以根据实际需求进行对异常的处理和返回相应的错误信息
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Internal Server Error");
}
}
写在最后
有关于SpringBoot常用注解到此就结束了。