依赖管理
父项目做依赖管理:
依赖管理:声明了所有开发中常用的依赖的版本号,自动版本仲裁机制。(依赖传递性原则)
依赖管理(在入门的项目中使用下面这一段代码即可,starter是一组开发依赖的集合) <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.4.RELEASE</version> </parent> 他的父项目 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.3.4.RELEASE</version> </parent>
声明了所有开发中常用的依赖的版本号,自动版本仲裁机制。
如果有一天对仲裁的版本不满意,那么在xml文件中写一段把自己想要的版本放入代码中即可,可以自定义修改版本号。
修改版本号步骤:
查看spring-boot-dependencies里面规定的当前依赖的版本用的key。
然后在项目里面重写配置即可。如下面代码所示修改了mysql的版本号。
<properties> <mysql.version>5.1.43</mysql.version> </properties>
开发导入starter场景启动器
1、见到很多 spring-boot-starter-* : *就是代表某种场景
例如:spring-boot-starter-web等。
2、只要引入starter,这个场景的所有常规需要的依赖我们都自动引入。
3、SpringBoot所有支持的场景,可以参考springboot的官方文档,除此之外还有第三方starter,如果还有其他场景可以使用自己创建的starter或第三方starter等。
https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-starter
4、见到的 *-spring-boot-starter: 一般这样的写法是第三方为我们提供的简化开发的场景启动器。
5、对于所有的starter场景启动器最底层的依赖,这个就是springboot最核心的底层依赖。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <version>2.3.4.RELEASE</version> <scope>compile</scope> </dependency>
以后引用默认依赖可以不写版本号。
但引入非版本仲裁的jar需要写清楚依赖的版本号。
自动配置
SpringBoot自动配置:
自动配置好Tomcat
1、引入Tomcat依赖。
2、配置Tomcat。
自动配置好SpringMVC开发的全套组件
1、引入SpringMVC全套组件。
2、自动配好SpringMVC常用组件(功能)
在以前web.xml中以前要自己配置很多SpringMVC的东西。
自动配置好Web的常见使用功能,例如字符编码的问题
1、配置好了Web开发的常见场景功能。
默认的包结构
1、主程序所在包及其下面的所有子包里面的组件都会被默认扫描进来,无需以前的包扫描配置
2、想要改变扫描路径
@SpringBootApplication(scanBasePackages=“com.atguigu”)
或者@ComponentScan 指定扫描路径,这个时候可以改变包的扫描路径,主程序外的包也可以运行了。
同时注意到:
@SpringBootApplication 等同于以下三个 @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan("com.atguigu.boot")
各种配置拥有默认值
1、默认配置最终都是映射到某个类上如:MultipartProperties
2、配置文件的值最终会绑定每个类上,这个类会在容器中创建对象
按需加载所有自动配置项
1、非常多的starter,但是只会打开引入哪个场景所对应的配置,在starter中有一个包叫做autoconfigure,所有的场景配置都写在里面了。