spring boot3--自动配置与手动配置
springboot自动配置自动配置了大量组件配置信息可以在application.properties文件中修改。当添加了特定的Starter POM后springboot会根据类路径上的jar包来自动配置bean比如springboot发现类路径上的MyBatis相关类springboot会自动配置MyBatis相关的bean。springboot使用默认配置来设置这些功能开发人员也可以自定义配置来覆盖默认配置。这些配置信息如何生效的通过ConfigurationProperties注解将配置信息注入到组件中的属性类的。属性类一般以Properties结尾。比如tomcat组件的ServerProperties类就是将配置信息中server开头的配置注入到属性中比如server.port8080会被绑定到属性中/* by yours.tools - online tools website : yours.tools/zh/json2yaml.html */ ConfigurationProperties(server) public class ServerProperties { private Nullable Integer port; private Nullable InetAddress address; ..... }自动配置是按需加载的springboot提供很多自动配置类这些自动配置不是全部生效它是按需加载的导入了哪个启动器则该启动器对应的配置类才会被加载。任何启动器都会关联一个启动器spring-boot-Starter它是springboot框架最核心的启动器。spring-boot-Starter又关联引入spring-boot-auto从figure。所有的自动配置类都在这里。自动配置类用来创建相应的组件。按需加载如何实现使用条件注解可以实现按需加载。条件注解基于某些条件决定是否应该创建一个bean。这些注解通常用在自动配置类上以确保只有在特定条件满足时才会应用相应的配置。条件注解可以用在类上也可以用在方法上。常见的条件注解有ConditionalOnClass 指定类存在时才创建beanConditionalOnMissingClass 指定类不存在时才创建beanConditionalOnBean 容器中存在指定bean时才创建beanConditionalOnMissingBean 容器中不存在指定bean时才创建beanConditionalOnProperty 配置文件中存在指定属性时才创建beanConditionalOnResource 指定资源存在时才创建beanConditionalOnWebApplication 应用程序是Web应用时才创建beanConditionalOnNotWebApplication 应用程序不是Web应用时才创建bean修改默认的包扫描规则修改扫描规则有2种方式在主入口类上添加以下注解的任意一个都可以修改包扫描规则扫描com包及其子孙包/* by yours.tools - online tools website : yours.tools/zh/json2yaml.html */ ComponentScan(com)SpringBootApplication(scanBasePackages com)自动配置的实现原理程序从main方法开始执行主入口类上使用SpringBootApplication进行标注SpringBootApplication是复合注解代表以下三个注解的功能a. SpringBootConfiguration:它被Configuration标注。表明主入口类是一个配置类此时该配置开始加载。b. ComponentScan 默认扫描主入口类所在包及其子孙包因此spring-boot-autoconfigure 自动配置类是无法加载的那么这些自动配置类又是怎么生效的呢c.EnableAutoConfiguration 该注解的作用就是启用自动配置EnableAutoConfiguration 被Import({AutoConfigurationImportSelector.class})标注​ Import({AutoConfigurationImportSelector.class})的作用是将AutoConfigurationImportSelector作为一个bean加载到Ioc容器中​ 这个bean的作用是负责收集和选择所有符合条件的自动配置类。总结运行环境准备阶段引入Web启动器最终传递引入了自动配置的jar包自动配置的jar包中有152个自动配置类到此运行环境准备完毕运行阶段EnableAutoConfiguration 启用自动配置将152个自动配置类全部加载到Ioc容器中。然后根据开发场景筛选出必须得自动配置类自动配置类加载了很多组件每个组件需要的数据来自属性类属性类的属性来自配置文件总之一句话。导入启动器修改配置文件。就可以完成对应功能的开发。springmvc配置# 让springboot的静态资源处理失效 spring.web.resources.add-mappingsfalse # 配置静态资源的访问URL spring.mvc.static-path-pattern/** # 静态资源文件存储位置默认配置 spring.web.resources.static-locationsclasspath:/META-INF/resources/, classpath:/resources/, classpath:/static/, classpath:/public/springboot对静态资源是如何处理的什么样的URL 访问哪个位置上的资源文件webjarswebjars是现在前后端分离中比较重要的一种静态资源打包方式。webjars是一种常用的前端库如jQuery打包成jar包的形式方便在java程序中使用。webjars提供了一种标准化的方式来管理前端库使其更容易集成到java项目中并且可以利用Maven的依赖管理功能。!-- webjars,将前端库打成jar包-- dependency groupIdorg.webjars.npm/groupId artifactIdvue/artifactId version3.5.12/version /dependency默认规则是当请求路径是/wbjars/**,则会去classpath:/MEAT-INF/resources/webjars/找。静态资源缓存处理静态资源缓存是指浏览器的缓存行为浏览器可以缓存js、CSS、图片、声音、视频到浏览器中下一次用户访问同样的资源就直接从缓存中获取不再从服务器获取这样能减少服务器压力提高相应效率。可以通过配置来修改默认的缓存机制。静态资源缓存设置 缓存有效期设置 spring.web.resources.cache.period3600 # 缓存控制设置 spring.web.resources.cache.cachecontrol.max-age20 # 是否启用最后一次修改时间的比对 spring.web.resources.cache.use-last-modifiedtrue静态index.html的支持spring会自动处理位于静态资源目录下的index.html文件名必须是index.html使其成为应用程序的主页。注意此时不能配置静态资源访问urlspring.mvc.static-path-pattern必须使用默认的配置favicon.ico将favicon.ico放在静态资源根目录下就会自动生效。spring boot的web手动配置静态资源处理编写代码的方式第一种方式 实现WebMvcConfigurer接口// 添加这个注解后表示不再使用springboot提供的默认配置 // EnableWebMvc Configuration public class WebConfig implements WebMvcConfigurer { // 静态资源处理需要重写的方法 Override public void addResourceHandlers(ResourceHandlerRegistry registry) { // 使用注册器registry 绑定 pathPatterns 以及真实的静态资源文件存储路径 registry.addResourceHandler(/abc/**) // 配置路径访问模式 .addResourceLocations(classpath:/static1/, classpath:/static2/, classpath:/static3/); // 配置静态资源路径 } }第二种方式Configuration public class WebConfig2 { Bean public WebMvcConfigurer addResourceHandlers() { return new WebMvcConfigurer() { Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler(/abc/**) // 配置路径访问模式 .addResourceLocations(classpath:/static1/, classpath:/static2/, classpath:/static3/); // 配置静态资源路径 } }; } }web请求的路径匹配# 前端请求的url 匹配到controller中的某个方法 # 使用ant风格的路径匹配规则默认值是path_pattern_matcher # path_pattern_matcher兼容且支持ant风格 # 在ant风格中** 可以出现在任何位置但在path_pattern_matcher风格中** 只能出现在末尾 # spring6 下的ant风格 ** 也只能出现在末尾 spring.mvc.pathmatch.matching-strategyant_path_matcher本文来自博客园作者NE_STOP转载请注明原文链接https://www.cnblogs.com/alineverstop/p/19537574

相关新闻

深度测评9个AI论文写作软件,助你轻松搞定本科毕业论文!

深度测评9个AI论文写作软件,助你轻松搞定本科毕业论文!

深度测评9个AI论文写作软件,助你轻松搞定本科毕业论文! AI 工具正在重塑论文写作的未来 随着人工智能技术的不断进步,AI 工具在学术写作中的应用越来越广泛。对于本科生而言,面对毕业论文的压力,如何高效、高质量地完…

2026/7/6 1:46:29 阅读更多 →
电脑系统打不开软件提示缺少d3dx10_40.dll修复解决办法

电脑系统打不开软件提示缺少d3dx10_40.dll修复解决办法

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

2026/7/3 17:18:21 阅读更多 →
d3dx10_39.dll官方版本 免费下载文件方法分享

d3dx10_39.dll官方版本 免费下载文件方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

2026/7/7 15:25:19 阅读更多 →

最新新闻

用Cheat Engine修改《植物大战僵尸》:从内存扫描到逆向工程入门

用Cheat Engine修改《植物大战僵尸》:从内存扫描到逆向工程入门

1. 项目概述:当游戏修改器遇上经典塔防 如果你玩过《植物大战僵尸》,大概率对那永远不够用的阳光和关键时刻卡壳的子弹记忆犹新。作为一个从学生时代就热衷于“研究”游戏机制的玩家,我始终觉得,理解一个游戏如何运作,…

2026/7/8 16:18:32 阅读更多 →
解决Windows 10下PL2303驱动问题的完整指南:让老旧串口设备重获新生

解决Windows 10下PL2303驱动问题的完整指南:让老旧串口设备重获新生

解决Windows 10下PL2303驱动问题的完整指南:让老旧串口设备重获新生 【免费下载链接】pl2303-win10 Windows 10 driver for end-of-life PL-2303 chipsets. 项目地址: https://gitcode.com/gh_mirrors/pl/pl2303-win10 你是否遇到过Windows 10系统无法识别PL…

2026/7/8 16:18:32 阅读更多 →
MATLAB双频域水印实验包:DCT+DWT嵌入提取+攻击测试+质量评估

MATLAB双频域水印实验包:DCT+DWT嵌入提取+攻击测试+质量评估

本文还有配套的精品资源,点击获取 简介:直接运行就能做数字水印实验的MATLAB工具集,内置离散余弦变换(DCT)和离散小波变换(DWT)两套完整水印流程。主脚本watermark.m支持把logo图像&#xff…

2026/7/8 16:16:31 阅读更多 →
洛雪音乐桌面版:跨平台音乐聚合播放器终极使用指南

洛雪音乐桌面版:跨平台音乐聚合播放器终极使用指南

洛雪音乐桌面版:跨平台音乐聚合播放器终极使用指南 【免费下载链接】lx-music-desktop 一个基于 Electron 的音乐软件 项目地址: https://gitcode.com/GitHub_Trending/lx/lx-music-desktop 你是否厌倦了在不同音乐平台之间来回切换?是否希望在一…

2026/7/8 16:16:31 阅读更多 →
物流机器人调度仿真工具:MATLAB多策略任务分配+可视化路径规划(带GUI和独立运行版)

物流机器人调度仿真工具:MATLAB多策略任务分配+可视化路径规划(带GUI和独立运行版)

本文还有配套的精品资源,点击获取 简介:一套面向实际物流场景的机器人调度仿真工具,支持任务动态生成、多机器人协同指派与障碍物环境下的路径规划。内置7种任务分配策略(task1.m-task7.m),覆盖贪心、匈…

2026/7/8 16:16:31 阅读更多 →
62种野外可食用植物图像识别工具包:基于VGG16迁移学习,含训练权重与批量预测脚本

62种野外可食用植物图像识别工具包:基于VGG16迁移学习,含训练权重与批量预测脚本

本文还有配套的精品资源,点击获取 简介:一套开箱即用的植物图像分类工具,专注野外常见可食用植物识别,覆盖62个类别。内置4300张训练图和310张测试图,每类独立文件夹存放,类别名自动解析无需手动标注。采…

2026/7/8 16:16:31 阅读更多 →

日新闻

3大核心能力重塑《明日方舟》游戏体验:MAA自动化助手的革命性突破

3大核心能力重塑《明日方舟》游戏体验:MAA自动化助手的革命性突破

3大核心能力重塑《明日方舟》游戏体验:MAA自动化助手的革命性突破 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: …

2026/7/8 0:00:48 阅读更多 →
MyBatis 批量操作深度优化——从 N+1 到批处理的全路径

MyBatis 批量操作深度优化——从 N+1 到批处理的全路径

MyBatis 批量操作深度优化——从 N1 到批处理的全路径 一、从"功能正确"到"性能可接受"——MyBatis 批量操作的三段式进化 MyBatis 在日常增删改查场景中几乎是无感的——实体映射直观、SQL 控制灵活。但当数据量从千级上升到十万级、百万级,许…

2026/7/8 0:00:48 阅读更多 →
工业负载控制方案:TPD2015FN与PIC18F45K22应用解析

工业负载控制方案:TPD2015FN与PIC18F45K22应用解析

1. 工业负载控制方案概述在工业自动化、电机驱动和照明控制等高需求场景中,可靠地控制电感和电阻负载是核心挑战之一。TPD2015FN作为东芝的8通道高端智能功率开关IC,配合PIC18F45K22微控制器,能够构建一套稳定、高效的负载控制系统。这套组合…

2026/7/8 0:02:48 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/8 16:14:06 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/7 12:34:47 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/7 15:59:06 阅读更多 →

月新闻