依赖管理

父项目做依赖管理

  1. <parent>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-parent</artifactId>
  4. <version>2.3.7.RELEASE</version>
  5. </parent>

spring-boot-starter-parent 的父项目

  1. <parent>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-dependencies</artifactId>
  4. <version>2.3.7.RELEASE</version>
  5. </parent>

几乎声明了所有开发中常用的依赖的版本号,自动版本仲裁机制

自定义修改版本

  1. 1、查看spring-boot-dependencies里面规定当前依赖的版本 用的 key。
  2. 2、在当前项目里面重写配置
  3. <properties>
  4. <mysql.version>5.1.43</mysql.version>
  5. </properties>

启动场景

Spring 各类 starter
https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-starter

阿里云脚手架
https://start.aliyun.com/

自动配置

spring-boot-starter-web 已经自动引入了 spring-boot-starter-tomcat
并且自动配置好
SpringMVC 也自动引入并配置好

查看所有容器组件

  1. public static void main(String[] args) {
  2. // 返回 IOC 容器
  3. ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args);
  4. // 查看容器组件
  5. String[] names = run.getBeanDefinitionNames();
  6. for (String name : names) {
  7. System.out.println(name);
  8. }
  9. }

默认的包结构

  • 主程序所在包及其所有子包里的组件,都会被默认扫描

设置 scanBasePackages 修改默认扫描范围:

@SpringBootApplication(scanBasePackages = "com.qj")
public class MainApplication {

    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class, args);
    }
}
@SpringBootApplication(scanBasePackages = "com.qj")
等同于
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan("com.qj")

SpringBoot所有的自动配置功能都在 spring-boot-autoconfigure
SpringBoot 只会自动配置 引入的场景,也就是按需加载