SpringBoot特点2-自动配置特性-04

自动配置

通过上节的 HelloWorld,可以体会到,SpringBoot 帮我们配置好了以下这些:

自动配好 Tomcat

  • 引入 Tomcat 依赖(引入 spring-boot-starter-web 开发场景,就默认引入了 Tomcat 场景);
  • 配置 Tomcat。
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
      <version>2.3.5.RELEASE</version>
      <scope>compile</scope>
    </dependency>

自动配好 SpringMVC

  • 引入 SpringMVC 开发的全套组件(引入 spring-boot-starter-web 开发场景,就默认引入了 spring-web、spring-webmvc 场景);
  • 自动配好了 SpringMVC 常用组件(功能)
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>5.2.10.RELEASE</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.2.10.RELEASE</version>
      <scope>compile</scope>
    </dependency>

自动配好 Web 常见功能

  • SpringBoot 帮我们配置好了所有 Web 开发的场景场景。
    • 在 main 代码片段里,选择一个表达式 SpringApplication.run(MainApplication.class, args),Ctrl-Alt-V(Refactor->Introduce Variable)帮助简化代码中复杂的声明;
      • dispatcherServlet 组件、characterEncodingFilter(字符标码拦截器解决字符乱码问题)、ViewResolver(视图解析器)、multipartResolver(文件上传解析器)
public class MainApplication {                                                                                           
    public static void main(String[] args){                                                                              
        //1.返回我们 IOC 容器                                                                                                  
        ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args);//固定写法,Spring应用把主类跑起来                                                                                                                          
        //2.容器里面包含我们当前应用的所有组件,查看容器里边的组件,只要有我们这个组件,说明这个组件就能工作,这就是原理                                                       
        String[] names = run.getBeanDefinitionNames();//获取所有我们组件定义的名字;                                                   
        for (String name : names) {                                                                                      
             System.out.println(name);                                                                                   
        }                                                                                                                
    }         
}                                                                                                           

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

默认的包结构

  • 主程序所在包及其下面的所有子包里面的组件都会被默认扫描进来;
  • 无需以前的包扫描配置;
  • 若不将其他程序(WorldController)和主程序放在一起,还想运行成功,方法1:就要修改 @SpringBootApplication,改变扫描路径,使扫描包的层级放大,即:@SpringBootApplication(scanBasePackages = “com.cky”) ;方法2:或者使用@ComponentScan包扫描,来指定扫描路径。

方法 1

在这里插入图片描述

//来指定扫描的基础包就是com.cky,也就是将整个包层级放大一点,让它来进行扫描                                                                 
@SpringBootApplication(scanBasePackages = "com.cky")                                                                 
public class MainApplication {                                                                                       
    public static void main(String[] args){         
                                                                 
        //1.返回我们 IOC 容器                                                                                              
        ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args);//固定写法,Spring应用把主类跑起来
                                                                                                                     
        //2.容器里面包含我们当前应用的所有组件,查看容器里边的组件,只要有我们这个组件,说明这个组件就能工作,这就是原理                                                   
        String[] names = run.getBeanDefinitionNames();//获取所有我们组件定义的名字;                                               
        for (String name : names) {                                                                                  
             System.out.println(name);                                                                               
        }                                                                                                            
    }                                                                                                                
}                                                                                                                    

在这里插入图片描述

方法 2

@SpringBootApplication
等同于
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan("com.cky.boot")

在这里插入图片描述

@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan("com.cky")
public class MainApplication {
    public static void main(String[] args){

        SpringApplication.run(MainApplication.class, args);//固定写法,Spring应用把主类跑起来

    }
}

在这里插入图片描述

各种配置拥有默认值

  • 默认配置最终都是映射到某个类上,如:MultipartProperties
  • 配置文件的值最终会绑定在某个类上,这个类会在容器中创建对象
  • 修改默认值,在 application.properties 中修改

按需加载所有自动配置项

  • 非常多的 starter
  • 引入了哪些场景,哪些场景的自动配置才会开启
  • SpringBoot 所有的自动配置功能都在 spring-boot-autoconfigure 包里面
    在这里插入图片描述
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玥玥&编程学习记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值