SpringBoot核心注解

tim-qtp...大约 3 分钟SpringBoot框架

@SpringBootApplication

  • @SpringBootConfiguration:组合了 @Configuration 注解,表明该类是一个配置类
  • @EnableAutoConfiguration:打开自动配置的功能
  • @ComponentScan:启用组件扫描

SpringBoot 自动配置原理了解吗?

在 Spring Boot 中,开启自动装配的注解是@EnableAutoConfiguration

Spring Boot 为了进一步简化,直接通过 @SpringBootApplication 注解一步搞定,该注解包含了 @EnableAutoConfiguration 注解。

main 类启动的时候,Spring Boot 会通过底层的AutoConfigurationImportSelector 类加载自动装配类。

@AutoConfigurationPackage //将main同级的包下的所有组件注册到容器中
@Import({AutoConfigurationImportSelector.class}) //加载自动装配类 xxxAutoconfiguration
public @interface EnableAutoConfiguration {
    String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";

    Class<?>[] exclude() default {};

    String[] excludeName() default {};
}

AutoConfigurationImportSelector实现了ImportSelector接口,该接口的作用是收集需要导入的配置类,配合 @Import() 将相应的类导入到 Spring 容器中。

自动配置微调:

有时候我们只需要微调下自动配置就能满足需求,并不需要覆盖自动配置的Bean,此时我们可以在application.yml属性文件中进行配置。

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mall_tiny?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
    username: root
    password: root

SpringBoot常用注解:

  • 组件相关:@Controller,通常与@RequestMapping联用,@Service,@Repository,@Component;

  • 依赖注入注解:

    @Autowired(根据对象的类型自动注入),可以配置required=false来注入不一定存在的对象。

    @Resource根据对象的名称自动注入依赖对象,(name = "umsAdminServiceImpl")

    @Qualifier("umsAdminServiceImpl"),当同一个对象有多个实例可以注入时,使用@Autowired注解无法进行注入,这时可以使用@Qualifier注解指定实例的名称进行精确注入。

  • SpringMVC相关注解:

    @RequestMapping 用于映射请求路径和请求方法到控制器方法上。

    @RequestBody 用于接收请求体中的 JSON 数据,并将其自动转换为 Java 对象。

    @ResponseBody 用于将控制器方法的返回值转换为 JSON 或其他格式的数据,并写入响应体。

    @RequestParam 用于接收请求参数,支持以下几种场景:

    Query Parameter:GET 请求中拼接在 URL 中的参数。

    Form Data:POST 请求中表单提交的参数。

    Multipart:文件上传请求中的部分参数。

    @PathVariable 用于接收 URL 中的动态路径参数,常用于 REST 风格的 API。

    @RestController 用于定义一个控制器类,自动将方法的返回值作为响应体返回,无需额外的 @ResponseBody 注解。

    @GetMapping@PostMapping

  • 配置相关注解

    @Configuration

    @ComponentScan

    @EnableCaching

    @Value

    jwt:
      tokenHeader: Authorization # JWT存储的请求头
      secret: mall-admin-secret # JWT加解密使用的密钥
      expiration: 604800 # JWT的超期限时间(60*60*24*7)
      tokenHead: 'Bearer '  # JWT负载中拿到开头
    

    @ConfigurationProperties

  • 数据库事务相关注解

    @EnableTransactionManagement:启用Spring基于注解的事务管理功能,需要和@Configuration注解一起使用。

    @Transactional

  • 全局异常处理注解:

    @ControllerAdvice:常与@ExceptionHandler注解一起使用,用于捕获全局异常,能作用于所有controller中

    @ExceptionHandler:修饰方法时,表示该方法为处理全局异常的方法。