首页 > 其他分享 >SpringBoot自动配置的原理

SpringBoot自动配置的原理

时间:2023-06-18 15:34:24浏览次数:37  
标签:SpringBoot 配置 默认 源码 自动 注解 原理

以WebMvcAutoConfiguration自动配置的原理为例,SpringBoot内部对大量的第三方库或Spring内部库进行了默认配置,这些配置是否生效,取决于我们是否引入了对应库所需的依赖,如果有那么默认配置就会生效。如果引入springboot-starter-web那么对应的web配置就会自动配置。那么是如何自动配置的呢?

通过源码可以看到:@Configuration:声明这个类是一个配置类。

条件注解(Conditional Annotation):Spring Boot提供了一系列的条件注解,如@ConditionalOnClass@ConditionalOnMissingBean@ConditionalOnProperty等。(就是在某个条件下,满足项目的是什么类型)

(查源码)自动配置类(Auto-Configuration Class):自动配置类使用条件注解来标记自己的生效条件,并在满足条件时进行自动配置。每个自动配置类通常都对应一个特定的功能模块或库,并声明需要自动配置的Bean。对于一个web程序来说,类中还定义了视图解析器、处理器适配器(HandlerAdapter)

对于类中的这些属性,@EnableAutoConfiguration注解引入了两个属性:WebMvcProperties和ResourceProperties,点击源码查看属性类,里面有内部资源视图解析器的prefix和suffix属性等静态文件资源。

SpringBoot为我们提供了默认配置,而默认配置生效的条件,我们也可以自己配置,那么就会覆盖默认配置。

标签:SpringBoot,配置,默认,源码,自动,注解,原理
From: https://www.cnblogs.com/kuangsun125/p/17489190.html

相关文章

  • per-CPU变量的静态和动态分配原理
    per-CPU是2.6内核中引入的,访问per-CPU变量几乎不需要锁,每个处理器都在其自己的副本上工作。这些副本是如何生成的呢?本文尝试解答这个问题。静态per-CPU结构设计思路大体可以分为两个阶段:编译阶段和运行时阶段在编译阶段,实际上只生成了一个CPU原本。系统中所有per-CPU结构都放到了一......
  • SpringBoot整合Kafka
    第一步: 第二步: 第三步:  ......
  • kafka工作原理
    1.工作流程以及文件存储机制 kafka中的消息是以topic进行分类的,生产消费消息都是面向topic。 topic是逻辑上的概念,partition分区是物理上的概念,每个分区对应一个log文件,该log文件存储的就是producer生产的log数据。producer生产的数据会追加到文件末端。消费者组中的每个消费......
  • Windows Server 2022 上添加无线网卡组件的批处理命令 启用 Windows Server 2022 无线
    在WindowsServer2022上添加无线网卡组件的批处理命令:打开记事本,将以下命令复制粘贴到记事本中:dism/online/enable-feature/featurename:Wireless-Networking/All将文件保存为后缀名为.bat的批处理文件,比如"install_wireless_component.bat"。在Windowsserver2022......
  • 使用以下命令来禁止 Windows Server 2022 在登录时自动启动服务器管理器
    使用以下命令来禁止WindowsServer2022在登录时自动启动服务器管理器:打开记事本,将以下命令复制粘贴到记事本中:regadd"HKLM\Software\Microsoft\ServerManager"/vDoNotOpenServerManagerAtLogon/tREG_DWORD/d1/f将文件保存为后缀名为.bat的批处理文件,比如"disabl......
  • 使用以下命令将 Windows Server 2022 上的 Bluetooth 服务全部设置为自动启动
    使用以下命令将WindowsServer2022上的Bluetooth服务全部设置为自动启动:打开记事本,将以下命令复制粘贴到记事本中:scconfigbthservstart=autoscconfigBluetoothAudioGatewayServicestart=autoscconfigBluetoothAVRCPServicestart=autoscconfigBluetoothUse......
  • SpringBoot项目报错解决:“Error starting ApplicationContext. To display the condit
    SpringBoot项目报错:ErrorstartingApplicationContext.Todisplaytheconditionsreportre-runyourapplicationwith'debug'enabled.以下方案80%可以帮助您解决这些个‘可恶的’问题目录一、编译出问题二、代码格式导致的编译出问题三、请求接口重复四、......
  • python自动化办公--pyautogui控制鼠标和键盘操作
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • Jupyter notebook代码自动提示补全
    1、第一步pipinstall-ihttp://pypi.douban.com/simple--trusted-hostpypi.douban.comjupyter_contrib_nbextensions 2、第二步jupytercontribnbextensioninstall--user 3、第三步pipinstall-ihttp://pypi.douban.com/simple--trusted-hostpypi.douban......
  • SpringBoot中跨域问题的处理
    跨越问题产生原因:产生跨域问题的原因是浏览器的同源策略,所谓同源是指:域名,协议,端口相同。如果不同,将会出现跨域问题。一、创建项目我们创建两个项目,一个命名为provider提供服务,一个命名为consumer消费服务,第一个项目端口配置为8080,第二个项目端口配置为8081,然后在provider中提供一个......