一,核心注解
1, @SpringBootApplication
用途:标注一个主程序类,表明是一个SpringBoot应用程序的入口。
功能:这是一个复合注解,组合了@ComponentScan,@EnableAutoConfiguration,@SpringBootConfiguration 3个注解。
- @SpringBootConfiguration注解又是@Configuration注解的别名,用于标识一个类为配置类,类似于Spring XML配置文件。
- @EnableAutoConfiguration 启用Spring Boot的自动配置机制,根据项目中的依赖和应用上下文自动配置Spring应用程序。
- @ComponentScan 自动扫描指定包及其子包中的Spring组件。
二,自动配置注解
2,@EntableAutoConfiguration
用途:启用Spring的自动配置机制,根据项目中的依赖和应用上下文自动配置Spring应用程序。它会尝试根据pom文件中添加的依赖和项目中的配置自动配置Spring bean。比如redis,mysql, mq之类的依赖。
3,@Configuration
用途:标注一个类是配置类,相当于一个Spring XML配置文件。配置类可以包含一个或者多个Bean注解的方法。这些方法会将bean注入到Spring容器中。
三,组件扫描和注入注解
4,@ComponentScan
用途:指定要扫描的包,以便发现和初始化项目里所有的Spring组件。默认情况下,@ComponentScan注解会扫描主应用类所在的包及其子包。
5,@Component
用途:用于标识一个类为Spring组件(也就是bean),可以被注入到Spring容器。@Component注解是一个通用的注解,可以用来标注任何Spring管理的bean,像@Service,@Controller,@Repository都是@Component注解的别名。
6,@Service
用途:表示服务层组件,是@Component注解的别称,用于标识业务逻辑层服务。
7,@Repository
用途:用于标识持久层组件,是@Component注解的别称,用于标识数据访问组件。
8,@Controller
用途:用于标识控制层组件,是@Component注解的别称,用于标识Spring MVC控制器,处理Web请求并返回视图。
需要和@RestController区别起来,在Spring中如果是@Controller注解标识,返回的是一个web路径,需要指向对应view(即jsp或者html)的路径。但是如果是@RestController,返回是一个数据,字符串或者xml格式。
9,@RestController
用途:用于标识Spring MVC中的一个控制器组件,是@Controller注解和@ResponseBody注解的组合。返回的对象会自动序列化为Json或XML,并写入http响应体中。
四,数据绑定和验证注解
10,@RequestMapping
用途:用于映射HTTP请求到处理方法上(GET,POST,PUT,DELETE,PATCH等)。可以用在类上,也可以用在方法上。
11,@GetMapping
用途:映射HTTP GET方法到处理方法上,是@RequestMapping注解用于GET方法的特例。
12,@PostMapping
用途:映射HTTP POST方法到处理方法上,是@RequestMapping注解用于POST方法的特例。
13,@ResponseBody
用途:将方法的返回值转换为指定格式(如JSON,XML等)作为HTTP响应的内容返回给客户端。在方法上使用后,方法返回的对象就不是View对象,而是直接写入HTTP响应体中的数据。
14,@RequestBody
用途:将HTTP请求体中的内容(如JSON,XML)映射到一个Java对象。用于将POST请求体中从客户端发送的数据绑定到方法的参数上。
15,@PathVariable
用途:从请求路径中获取参数值,从而允许使用动态请求路径。
16,@RequestParam
用途:从请求中获取参数,参数来自请求路径后?开始的部分 (&来分割的key=value)
五,其他常用注解
17,@Value
用途:将配置在项目配置文件中或者配置中心的值注入到Spring bean中。
18,@Autowired
用途:自动装配Bean,进行依赖注入。Spring会自动注入依赖的Bean,可以用于字段,构造方法和方法上。
19,@Bean
用途:定义一个Spring Bean,定义的方法返回的对象可以被注入到Spring的容器。
20,@Conditional
用途:根据条件创建Bean,可以与自定义条件类一起使用,只有在条件满足时,Spring才会创建Bean。@ConditionalOnProperty是基于@Conditional注解,一般情况下用@ConditionalOnProperty更简单。
21,@Primary
用途:指定一个接口有多个实现时,优先选择的Bean。
22,@Qualifier
用途:配合@Autowired使用,用于指定注入的Bean的名称或id
23,@Lazy
用途:延迟初始化Bean,只有在首次使用时才创建Bean。
24,@Scope
用途:指定Bean的作用域(单例,原型,请求,会话等)
六,基于Lombok的注解
以下这些注解是需要引入Lombok的依赖才可以使用
25,@Data
用途:@Data是一个复合注解,集成了@Getter,@Setter,@ToString,@EqualsAndHashCode,@RequiredArgsConstuctor等注解。
26,@AllArgsConstructor
用途:自动生成包含所有字段的构造方法
27,@NoArgsConstructor
用途:自动生成无参构造方法
28,@Builder
用途:生成支持链式编程的构造方法