SpringBoot常用注解详解
Spring Web MVC 注解
@RequestMapping
@RequestMapping主要用于将Web请求与处理类的方法进行映射。它支持多种配置属性,如value(URL路径)、method(HTTP方法)、params(参数过滤)等。
示例代码:
@RestController
public class DemoController {
@RequestMapping(value = "/home", method = RequestMethod.GET)
public String home() {
return "Welcome Home";
}
@RequestMapping(value = "/test", method = RequestMethod.POST, consumes = "application/json")
public String testMethod() {
System.out.println("Test Method Called");
return "Success";
}
}
@RequestBody
@RequestBody用于将请求体中的数据绑定到对象中。
示例代码:
@PostMapping("/user")
public User createUser(@Valid @RequestBody User user) {
return save(user);
}
@GetMapping & @PostMapping
@GetMapping和@PostMapping是快捷方式,分别对应GET和POST请求。
@PutMapping & @DeleteMapping
@PutMapping和@DeleteMapping分别用于PUT和DELETE请求。
@PatchMapping
@PatchMapping用于处理PATCH请求。
@ControllerAdvice
@ControllerAdvice配合@ExceptionHandler、@InitBinder和@ModelAttribute使用,处理全局异常和配置。
示例代码:
@ControllerAdvice(basePackages = {"com.example.controller"})
public class GlobalControllerAdvice {
@InitBinder
public void initBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
dateFormat.setLenient(false);
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
}
@ExceptionHandler(UserNotFoundException.class)
public ModelAndView handleUserNotFound() {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("error");
return modelAndView;
}
}
@ResponseBody
@ResponseBody自动将控制器方法的返回值写入HTTP响应。
@PathVariable
@PathVariable用于从URI模板变量中提取参数。
示例代码:
@GetMapping("/users/{id}/roles/{roleId}")
public Role getUserRole(@PathVariable("id") Long id, @PathVariable("roleId") Long roleId) {
return new Role();
}
@RequestParam
@RequestParam用于获取请求参数。
示例代码:
@GetMapping("/role")
public Role getRoleById(@RequestParam("id") Long id) {
return new Role();
}
@CrossOrigin
@CrossOrigin为跨域请求提供支持。
示例代码:
@CrossOrigin
@GetMapping("/role")
public Role getRole(@RequestParam("id") Long id) {
return new Role();
}
Spring Bean 注解
@ComponentScan
@ComponentScan用于指定Spring扫描组件的包路径。
@Component, @Service, @Repository
这些注解用于标记不同类型的组件,由Spring管理。
Spring 依赖注入
@Autowired
@Autowired用于标记需要自动注入的依赖项。
@Primary
@Primary用于定义相同类型Bean的优先级。
@PostConstruct & @PreDestroy
这两个注解分别在Bean初始化前和销毁前执行操作。
示例代码:
@Component
public class LifecycleDemo {
@PostConstruct
public void init() {
System.out.println("Initializing...");
}
@PreDestroy
public void cleanup() {
System.out.println("Cleaning up...");
}
}
@Qualifier
@Qualifier用于帮助@Autowired选择正确的依赖项。
示例代码:
@Autowired
@Qualifier("specificImplementation")
private Service service;
@SpringBootApplication
@SpringBootApplication是一个组合注解,简化了Spring Boot应用的启动配置。