依赖管理
父项目做依赖管理
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.7.RELEASE</version>
</parent>
spring-boot-starter-parent 的父项目
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.3.7.RELEASE</version>
</parent>
几乎声明了所有开发中常用的依赖的版本号,自动版本仲裁机制
自定义修改版本
1、查看spring-boot-dependencies里面规定当前依赖的版本 用的 key。
2、在当前项目里面重写配置
<properties>
<mysql.version>5.1.43</mysql.version>
</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 也自动引入并配置好
查看所有容器组件
public static void main(String[] args) {
// 返回 IOC 容器
ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args);
// 查看容器组件
String[] names = run.getBeanDefinitionNames();
for (String name : names) {
System.out.println(name);
}
}
默认的包结构
- 主程序所在包及其所有子包里的组件,都会被默认扫描
设置 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 只会自动配置 引入的场景,也就是按需加载