spring boot 二:自动配置原理

spring boot 二:自动配置原理

1 SpringBoot特点

1.1 依赖管理

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.5.4</version>
</parent>

parent父项目是来做依赖管理的,即写了父项目的版本号,如2.5.4,那么后面的依赖,不要写版本号了,比如:
在这里插入图片描述
在这里插入图片描述
依赖管理中,spring-boot-starter-web的父项目:
在这里插入图片描述
再点进去:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
几乎声明了所有开发中常用的依赖的版本号
在这里插入图片描述
在这里插入图片描述
直接复制这段到依赖的配置中去:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
无需关注版本号,自动版本仲裁

要修改仓库,直接网址搜索mvn re来搜索mav仓库
在这里插入图片描述
1.查看spring-boot-dependencies里面规定当前依赖的版本用的key

2.在当前项目里面重写配置

<properties>
    <mysql.version>5.1.43</mysql.version>
</properties>

在这里插入图片描述
在这里插入图片描述
1.见到很多spring-boot-starter-* :*代表某种场景
2.只要引入starter,这个场景的所有常规需要的依赖我们都自动引入
https://docs.spring.io/spring-boot/docs/current/reference/html/using.html#using.build-systems.starters
3.推荐命名不要以spring-boot开头,最好是thirdpartyproject-spring-boot-starter
4.见到的 *-spring-boot-starter: 第三方为我们简化开发的场景启动器
5.所有场景启动器最底层的依赖

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter</artifactId>
  <version>2.5.4</version>
  <scope>compile</scope>
</dependency>

2 自动配置

自动配好Tomcat:
引入Tomcat依赖;配置Tomcat
在这里插入图片描述
自动配好SpringMVC
引入SpringMVC全套组件;自动配好SpringMVC常用组件(功能)

package com.xiaoxu.boot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;

/*
* 主程序类
* @SpringBootApplication: 这是一个SpringBoot应用
* */
@SpringBootApplication
public class MainApplication {
    public static void main(String[] args) {
        //1,返回我们IOC容器
        ConfigurableApplicationContext run=SpringApplication.run(MainApplication.class,args);

        //2,查看容器里面的组件
        String[] names=run.getBeanDefinitionNames();
        for(String i:names){
            System.out.println(i);
        }
    }
}

在这里插入图片描述
组件例如:
在这里插入图片描述
重启main查看如下:
在这里插入图片描述
tips:中文没有乱码,是因为组件characterEncodingFilter

在这里插入图片描述
自动配好web常见功能,如:字符串编码问题;SpringBoot帮我们配好了所有web开发常见的场景

spring mvc中,视图解析器:viewResolver,还比如文件上传解析器:multipartResolver
在这里插入图片描述
包结构:
在这里插入图片描述
在这里插入图片描述
默认的包结构:主程序所在包及其下面的所有子包里面的组件都会被默认扫描进来,无需以前的包扫描配置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果希望在主程序外面也可以配置好,找到主程序的注解@SpringBootApplication:在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
想要改变扫描路径,@SpringBootApplication(scanBasePackages = “com.xiaoxu”),或者@ComponentScan指定扫描路径
比如:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
依然能够访问到:
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

@SpringBootApplication(scanBasePackages = "com.xiaoxu")
//等同于下面3个注解:
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan("com.xiaoxu")

在这里插入图片描述
各种配置拥有默认值,默认配置最终都是映射到MultipartProperties;配置文件的值最终会绑定到每个类上,这个类会在容器中创建对象

按需加载所有自动配置项
非常多的starter,引入了哪些场景这个场景的自动配置才会开启,SpringBoot所有的自动配置功能都在spring-boot-autoconfigure包里面

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值