读书笔记 -- Spring Boot3 核心技术 Chapter3 Spring Boot Starter 与自动配置

3.1 概述

一个完整的 Spring Boot Starter 一般包含以下组件:

  • 完成自动配置的自动配置模块;
  • 为自动配置模块提供的所有依赖项;

 

Spring Boot 官方 Starter 启动器: spring-boot-starter-*

第三方 Starter 启动器:*-spring-boot-starter 

 


3.3 Starter 的分类

1. application starter:如 spring-boot-starter、spring-boot-starter-amqp.....

2. production starter:spring-boot-starter-actuator。仅此一项,提供生产功能以帮助开发者监控和管理应用;

3. technical starter:如 spring-boot-starter-jetty...。目的是帮助开发者排除或替换 Spring Boot 框架内部默认的技术组件;

 


3.4 自动配置

1. 新旧自动配置文件

 

 旧的自动配置文件 META-INF/spring.factories 仅保留 系统级别的组件注册,不再作为应用级别的自动配置类的注册文件。

 

3.4.6 排除自动配置

1. 使用 @SpringBootApplication 注解

// @exclude 排除指定类
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class Application {
    // ...
}

// @excludeName 排除类名全路径
@SpringBootApplication(excludeName = {"org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration"})
public class Application {
    // ...
}

 

2. 使用 @EnableAutoConfiguration 注解

// @exclude 排除指定类
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class Application {
    // ...
}

// @excludeName 排除类名全路径
@SpringBootApplication(excludeName = {"org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration"})
public class Application {
    // ...
}

 

3. 统一的排除方案(适用于 Spring Boot 和 Spring Cloud)

spring:
  autoconfigure:
    exclude: 
      - org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration

 

3.4.7 替换自动配置

如果应用有自己的 @Bean,则默认自动配置类中的 @Bean 就不会再重复注册。所以,如果 Spring Boot 提供的默认配置不满足要求,那么完全可以在应用中提供自定义的配置来替换默认的配置。

 

posted on 2023-07-20 14:47  bruce_he  阅读(31)  评论(0编辑  收藏  举报