自动配置
    Spring 查看(CLASSPATH 上可用的框架)已存在的应用程序的配置。在此基础上,Spring Boot 提供了配置应用程序和框架所需要的基本配置。这就是自动配置。

    大多数情况下,自动配置的 Bean 满足了现有的业务场景,不需要去覆盖。但如果自动配置做的不够好,需要覆盖配置。比如通过命令行动态指定某个 jar ,按不同环境启动。那怎么办?这里先要考虑到配置的优先级。
    Spring Boot 不单单从 application.properties 获取配置,所以我们可以在程序中多种设置配置属性。按照以下列表的优先级排列:

    1. 命令行参数
    2. java:comp/env 里的 JNDI 属性
    3. JVM 系统属性
    4. 操作系统环境变量
    5. RandomValuePropertySource 属性类生成的 random.* 属性
    6. 应用以外的 application.properties(或 yml)文件
    7. 打包在应用内的 application.properties(或 yml)文件
    8. 在应用 @Configuration 配置类中,用 @PropertySource 注解声明的属性文件
    9. SpringApplication.setDefaultProperties 声明的默认属性

    可见,命令行参数优先级最高。这个可以根据这个优先级,可以在测试或生产环境中快速地修改配置参数值,而不需要重新打包和部署应用。
    还有第 6 点,根据这个在多 moudle 的项目中,比如常见的项目分 api 、service、dao 等 moudles,往往会加一个 deploy moudle 去打包该业务各个子 moudle,应用以外的配置优先。

    Spring Boot starter
    启动器是一套方便的依赖没描述符,它可以放在自己的程序中。你可以一站式的获取你所需要的 Spring 和相关技术,而不需要依赖描述符的通过示例代码搜索和复制黏贴的负载。
    SpringBoot中的starter是一种非常重要的机制,能够抛弃以前繁杂的配置,将其统一集成进starter,应用者只需要在maven中引入starter依赖,SpringBoot就能自动扫描到要加载的信息并启动相应的默认配置。starter让我们摆脱了各种依赖库的处理,需要配置各种信息的困扰。SpringBoot会自动通过classpath路径下的类发现需要的Bean,并注册进IOC容器。SpringBoot提供了针对日常企业应用研发各种场景的spring-boot-starter依赖模块。所有这些依赖模块都遵循着约定成俗的默认配置,并允许我们调整这些配置,即遵循“约定大于配置”的理念。

    例如,如果你想使用 Sping 和 JPA 访问数据库,只需要你的项目包含 spring-boot-starter-data-jpa 依赖项,你就可以完美进行。[

    ](https://blog.csdn.net/weixin_45136046/article/details/90768687)

    [

    ](https://blog.csdn.net/weixin_45136046/article/details/90768687)
    自定义starter
    https://www.cnblogs.com/hello-shf/p/10864977.html

    spring-boot-maven-plugin

    spring-boot-maven-plugin 提供了一些像 jar 一样打包或者运行应用程序的命令。

    • spring-boot:run 运行你的 SpringBoot 应用程序。
    • spring-boot:repackage 重新打包你的 jar 包或者是 war 包使其可执行
    • spring-boot:start 和 spring-boot:stop 管理 Spring Boot 应用程序的生命周期(也可说是为了集成测试)
    • spring-boot:build-info 生成执行器可以使用的构造信息。

    [

    ](https://blog.csdn.net/weixin_45136046/article/details/90768687)
    [

    ](https://blog.csdn.net/weixin_45136046/article/details/90768687)