一、注解列表 annotations
1、@SpringBootApplication
@SpringBootApplication是一个注解,用于标记Java应用程序的主类,以指示Spring Boot根据类路径中的设置自动配置Spring应用程序。它组合了三个注解:
- @SpringBootConfiguration:表示该类是Spring Boot应用程序的配置类。
- @EnableAutoConfiguration:表示启用Spring Boot自动配置机制。
- @ComponentScan:表示Spring应该扫描该类所在的包以及其子包以查找其他组件、配置和服务。
使用@SpringBootApplication注解可以大大简化Spring Boot应用程序的配置和启动。只需要将注解放在应用程序的主类上即可引入Spring Boot的自动配置机制,无需手动配置大部分Spring组件和功能。
2、@ComponentScan
@ComponentScan是Spring框架中的一个注解,用于指示Spring自动扫描指定的包及其子包,将被注解为@Controller、@Service、@Repository和@Component的类自动注册到Spring上下文中。这样就可以自动实例化这些类,并使用它们提供的服务。使用@ComponentScan注解,可以减少手动配置Spring应用程序上下文的工作量,简化Spring配置。
3、@Configuration
等同于Spring的XML配置文件的使用。
使用Java代码可以检查类型安全。
4、@EnableAutoConfiguration
自动配置
5、@RestController
该注解是@Controller和@ResponseBody的合集,表示这是个控制器Bean,并且是将函数的返回值直接填入HTTP响应体5中,是REST风格的控制器
6、@Autowired
实现自动导入。
7、@PathVariable
实现获取参数。
8、@JsonBackReference
实现解决嵌套外链问题。
9、@RepositoryRestResourcepublic
配合spring-boot-starter-data-rest使用。
二、Lombok注解
1、@Data
自动生成getter/setter、toString、equals、hashCode方法,以及不带参数的构造方法。
2、@NonNull
帮助处理NullPointerException
3、@CleanUp
自动管理资源,不用在finally中添加资源的close方法
4、@Getter/@Setter
自动生成getter/setter方法
5、@Value
用于注解final类
三、Spring注解
1、@RequestMapping
@RequestMapping注解的主要用途是将Web请求与请求处理类中的方法进行映射。Spring MVC和Spring WebFlux都通过RquestMappingHandlerMapping和RequestMappingHndlerAdapter两个类来提供对@RequestMapping注解的支持。
@RequestMapping注解对请求处理类中的请求处理方法进行标注;@RequestMapping注解拥有以下的六个配置属性:
value:映射的请求URL或者其别名
method:兼容HTTP的方法名
header:根据HTTP Header的存在、缺省或值对请求进行过滤
consume:设定在HTTP请求正文中允许使用的媒体类型
product:在HTTP响应体中允许使用的媒体类型
2、@RequestBody
@RequestBody在处理请求方法的参数列表中使用,它可以将请求主体中的参数绑定到一个对象中,请求主体参数是通过HttpMessageConverter传递的,根据请求主体中的参数名与对象的属性名进行匹配并绑定值。此外,还可以通过@Valid注解对请求主体中的参数进行校验。
3、@GetMapping
@GetMapping注解用于处理HTTP GET请求,并将请求映射到具体的处理方法中。具体来说,@GetMapping是一个组合注解,它相当于是@RequestMapping(method=RequestMethod.GET)的快捷方式。
4、@PostMapping
@PostMapping注解用于处理HTTP POST请求,并将请求映射到具体的处理方法中。@PostMapping与@GetMapping一样,也是一个组合注解,它相当于是@RequestMapping(method=HttpMethod.POST)的快捷方式。
5、@PutMapping
@PutMapping注解用于处理HTTP PUT请求,并将请求映射到具体的处理方法中,@PutMapping是一个组合注解,相当于是@RequestMapping(method=HttpMethod.PUT)的快捷方式。
6、@DeleteMapping
@DeleteMapping注解用于处理HTTP DELETE请求,并将请求映射到删除方法中。@DeleteMapping是一个组合注解,它相当于是@RequestMapping(method=HttpMethod.DELETE)的快捷方式。
7、@PatchMapping
@PatchMapping注解用于处理HTTP PATCH请求,并将请求映射到对应的处理方法中。@PatchMapping相当于是@RequestMapping(method=HttpMethod.PATCH)的快捷方式。
8、@ControllerAdvice
@ControllerAdvice是@Component注解的一个延伸注解,Spring会自动扫描并检测被@ControllerAdvice所标注的类。@ControllerAdvice需要和@ExceptionHandler、@InitBinder以及@ModelAttribute注解搭配使用,主要是用来处理控制器所抛出的异常信息。
首先,我们需要定义一个被@ControllerAdvice所标注的类,在该类中,定义一个用于处理具体异常的方法,并使用@ExceptionHandler注解进行标记。
此外,在有必要的时候,可以使用@InitBinder在类中进行全局的配置,还可以使用@ModelAttribute配置与视图相关的参数。使用@ControllerAdvice注解,就可以快速的创建统一的,自定义的异常处理类。
9、@Controller
@Controller是@Component注解的一个延伸,Spring会自动扫描并配置被该注解标注的类。
四、Spring Bean注解
1、@ComponentScan
@Configuration
@ComponentScan(basePackages="com.example")
public class AppConfig {
// ...
}
@Configuration
@ComponentScan(basePackageClasses={Service1.class, Service2.class})
public class AppConfig {
// ...
}
@ComponentScan注解用于配置Spring需要扫描的被组件注解注释的类所在的包。可以通过配置其basePackages属性或者value属性来配置需要扫描的包路径。value属性是basePackages的别名。
2、@Service
@Service
public class UserServiceImpl implements UserService {
// ...
}
@Service注解是@Component的一个延伸(特例),它用于标注业务逻辑类。与@Component注解一样,被此注解标注的类,会自动被Spring所管理。
3、@Repository
@Repository注解也是@Component注解的延伸,与@Component注解一样,被此注解标注的类会被Spring自动管理起来,@Repository注解用于标注DAO层的数据持久化类。
4、@Bean
@Service
public class MyService {
// Service implementation
}
@Configuration
public class MyConfiguration {
@Bean
public MyService myService() {
return new MyService();
}
}
@Bean注解主要的作用是告知Spring,被此注解所标注的类将需要纳入到Bean管理工厂中。@Bean注解的用法很简单,在这里,着重介绍@Bean注解中initMethod和destroyMethod的用法。