SpringBoot SpringBoot 原理篇 1 自动配置 1.17 自动配置原理【3】
创始人
2024-02-21 16:54:55

SpringBoot

【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】

SpringBoot 原理篇

文章目录

      • SpringBoot
      • SpringBoot 原理篇
      • 1 自动配置
        • 1.17 自动配置原理【3】
          • 1.17.1 看源码了
          • 1.17.2 小结

1 自动配置

1.17 自动配置原理【3】

1.17.1 看源码了

【笔者用的2.7.4 ,感觉和老师的2.5.4 都已经差别很大了】

换个版本

在这里插入图片描述

在这里插入图片描述

OK, 前面我们已经说到

它在这个文件中默认加载了很多的自动配置的功能

在这里插入图片描述

比如说这儿的第一个就是它默认要加载的一个项

找出来看看这个配置的代码

在这里插入图片描述

现在在我们猫和老鼠的案例中 ,加入redis

没加之前的运行效果

package com.dingjiaxiong;import com.dingjiaxiong.bean.CartoonCatAndMouse;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.autoconfigure.*;
import org.springframework.boot.context.TypeExcludeFilter;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import org.springframework.context.annotation.Import;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Indexed;/*** ClassName: App* date: 2022/10/25 13:03** @author DingJiaxiong*/@SpringBootApplication//@SpringBootConfiguration
//        @Configuration
//                @Component
//        @Indexed
//@EnableAutoConfiguration
//        @AutoConfigurationPackage
//                @Import({AutoConfigurationPackages.Registrar.class})
//        @Import({AutoConfigurationImportSelector.class})
//@ComponentScan(excludeFilters = {
//                @ComponentScan.Filter(type = FilterType.CUSTOM, classes = {TypeExcludeFilter.class}),
//                @ComponentScan.Filter(type = FilterType.CUSTOM, classes = {AutoConfigurationExcludeFilter.class}
//        )}//@Import({AutoConfigurationPackages.Registrar.class})
//@Import({AutoConfigurationImportSelector.class})@Import(CartoonCatAndMouse.class)
public class App {public static void main(String[] args) {ConfigurableApplicationContext context = SpringApplication.run(App.class);String[] names = context.getBeanDefinitionNames();for (String name : names) {System.out.println(name);}CartoonCatAndMouse bean = context.getBean(CartoonCatAndMouse.class);bean.play();}}

运行结果

在这里插入图片描述

这一堆bean ,是没有redis的,现在我加个依赖

org.springframework.bootspring-boot-starter-data-redis2.7.1

在这里插入图片描述

OK,现在再试一次

在这里插入图片描述

效果超级明显,这就说明它已经加载了所有与redis 有关的bean 了

在这里插入图片描述

就是这句话生效了。

在这里插入图片描述

再看看这个,好家伙,和我们之前的案例有原理相像啊

点进去看看

在这里插入图片描述

嗯,它也没说它是个bean

在这里插入图片描述

我的这个也没说,看看它的默认值

在这里插入图片描述

这也是我们不配就能用的原因

在这里插入图片描述

接着后面它又导入了两组客户端的实现【这就是一个对象里面包另一个对象了,想想我们写配置的时候】

再接着看

在这里插入图片描述

如果我没有找到redisTemplate 这样一个bean,我就给你一个,如果你自己定义了,那我就不加载了,因为它怕加载重了

太细了

下面的StringRedisTemplate 也是一样的道理

在这里插入图片描述

OK,

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.17.2 小结
  1. 先开发若干种技术的标准实现
  2. SpringBoot启动时加载所有的技术实现对应的自动配置类
  3. 检测每个配置类的加载条件是否满足并进行对应的初始化
  4. 切记是先加载所有的外部资源,然后根据外部资源进行条件比对

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...