当前位置: 首页 > article >正文

MAUI 嵌入式 Web 架构实战(七) 构建设备实时通信与控制系统

springboot自动配置自动配置了大量组件配置信息可以在application.properties文件中修改。当添加了特定的Starter POM后springboot会根据类路径上的jar包来自动配置bean比如springboot发现类路径上的MyBatis相关类springboot会自动配置MyBatis相关的bean。springboot使用默认配置来设置这些功能开发人员也可以自定义配置来覆盖默认配置。这些配置信息如何生效的通过ConfigurationProperties注解将配置信息注入到组件中的属性类的。属性类一般以Properties结尾。比如tomcat组件的ServerProperties类就是将配置信息中server开头的配置注入到属性中比如server.port8080会被绑定到属性中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包及其子孙包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# 配置静态资源的访问URLspring.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的依赖管理功能。org.webjars.npmvue3.5.12默认规则是当请求路径是/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提供的默认配置// EnableWebMvcConfigurationpublic class WebConfig implements WebMvcConfigurer {// 静态资源处理需要重写的方法Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {// 使用注册器registry 绑定 pathPatterns 以及真实的静态资源文件存储路径registry.addResourceHandler(/abc/**) // 配置路径访问模式.addResourceLocations(classpath:/static1/, classpath:/static2/, classpath:/static3/); // 配置静态资源路径}}第二种方式Configurationpublic class WebConfig2 {Beanpublic WebMvcConfigurer addResourceHandlers() {return new WebMvcConfigurer() {Overridepublic 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授故谴逗

相关文章:

MAUI 嵌入式 Web 架构实战(七) 构建设备实时通信与控制系统

springboot自动配置 自动配置了大量组件,配置信息可以在application.properties文件中修改。 当添加了特定的Starter POM后,springboot会根据类路径上的jar包来自动配置bean(比如:springboot发现类路径上的MyBatis相关类&#xff…...

又一个开源的逆向 Qwen API 项目, 实现无限token还支持AI生图功能!

又一个开源的逆向 Qwen API 项目, 实现无限token还支持AI生图功能! 关键词: Qwen API、AI API网关、Docker部署大模型、LLM中转服务、AI接口调用、Cloud Code 调用AI 最近在做 AI 工具接入时,发现一个很现实的问题: 不同平台的模型接口调用方…...

别再只盯着ADC位数了!采样保持电路里这个‘电容’选多大,直接决定你的信噪比

采样电容选型:被工程师忽视的信噪比杀手 当新手工程师第一次设计数据采集系统时,往往会把全部注意力放在ADC的位数上——16位一定比12位好,24位更是"高保真"的代名词。但很少有人告诉你,即使选用最顶级的ADC芯片&#…...

GetQzonehistory:QQ空间历史数据备份的完整指南

GetQzonehistory:QQ空间历史数据备份的完整指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否担心QQ空间中的珍贵回忆会随着时间流逝而消失?GetQzonehis…...

收藏!2026年版AI发展全解析|程序员小白必看,看懂趋势抓住大模型时代红利

本文完整复盘2026年AI全周期发展脉络、当下核心行业变革趋势与中长期落地方向,清晰拆解AI从辅助工具进阶为人类智能合作伙伴的完整蜕变逻辑。深度解读编排者经济、技能蒸发、静默生产等当下爆火的AI全新发展概念,结合大模型、AI Agent、插件生态等2026前…...

分钟搞懂深度学习AI:实操篇:池化层

1. 流图:数据的河流 如果把传统的堆叠面积图想象成一块块整齐堆叠的积木,那么流图就像一条蜿蜒流淌的河流,河道的宽窄变化自然流畅,波峰波谷过渡平滑。 它特别适合展示多个类别数据随时间的变化趋势,尤其是当你想强调整…...

从‘听’到‘看’:语音识别/音频降噪项目中,频谱、功率谱、语谱图到底该怎么选?避坑指南

从‘听’到‘看’:语音信号处理中的频域分析工具实战指南 当你第一次将麦克风捕捉到的声波转化为数字信号时,那串看似杂乱无章的数值背后隐藏着怎样的秘密?在语音识别、降噪处理等项目中,选择合适的频域分析工具往往决定了整个系…...

医学图像分割模型‘瘦身’实战:如何用UNet++的深度监督功能,在推理速度与精度间找到最佳平衡点

医学图像分割模型优化实战:UNet深度监督与剪枝策略全解析 在医疗AI领域,实时性和准确性往往是一对难以调和的矛盾。临床医生需要快速获取分割结果辅助诊断,而放射科图像的高精度要求又让模型复杂度居高不下。UNet通过创新的嵌套架构和深度监督…...

从ARM架构到台积电工艺:手把手教你读懂手机芯片发布会上的‘黑话’

从ARM架构到台积电工艺:手把手教你读懂手机芯片发布会上的‘黑话’ 每次手机新品发布会,厂商总爱用一堆专业术语轰炸观众——"X3超大核性能提升25%"、"全球首发4nm工艺"、"LPDDR5X内存带宽翻倍"。这些看似高大上的参数&a…...

技术演讲从入门到精通:如何让台下开发者为你鼓掌?

在软件测试的职业生涯中,我们常常需要展示自己的工作成果、推广新的测试方法、或者在技术社区分享经验。无论是团队内部的分享会、跨部门的技术评审,还是在行业大会上的主题演讲,一场精彩的技术演讲,不仅能清晰地传递信息&#xf…...

保姆级教程:用Fast DDS(ROS2同款)在Ubuntu上快速搭建你的第一个DDS通信Demo

从零构建DDS通信系统:Fast DDS实战指南与车载通信深度解析 在智能汽车与分布式系统开发领域,数据分发服务(DDS)正成为新一代通信架构的核心支柱。不同于传统点对点通信模式,DDS以数据为中心的发布/订阅机制&#xff0…...

3个突破性功能让B站视频管理效率提升300%:BiliTools跨平台工具箱深度解析

3个突破性功能让B站视频管理效率提升300%:BiliTools跨平台工具箱深度解析 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bili…...

告别样本失衡:用PyTorch手把手实现Focal Loss,让你的目标检测模型更关注‘难啃的骨头’

用Focal Loss解决目标检测中的样本失衡难题:PyTorch实战指南 当你盯着训练日志里那些"虚高"的准确率指标时,是否注意到模型对小目标、遮挡目标的识别率始终低迷?这很可能不是数据标注的问题,而是经典交叉熵损失函数在面…...

别再乱画UML了!用包图整理你的用例图和类图,让项目结构一目了然

用UML包图重构项目架构:从混乱到清晰的实战指南 当你的代码库膨胀到几十万行,当每次需求变更都引发连锁反应,当新成员需要三个月才能摸清模块边界——是时候重新审视项目的组织结构了。UML包图就像软件架构的GPS导航系统,它能将散…...

别再死磕GPIO了!用STM32的PWM+DMA驱动WS2812灯带,CPU占用率直降90%

STM32实战:PWMDMA驱动WS2812灯带的极致性能优化 在智能家居和物联网设备开发中,绚丽的灯光效果往往能大幅提升产品体验。但当你用STM32的GPIO模拟时序驱动WS2812灯带时,是否遇到过这些困扰:CPU占用率飙升导致传感器数据采集延迟、…...

别再死记硬背了!用这5个NIFI处理器组合,轻松搞定90%的数据流转场景

5组NIFI处理器黄金搭档:解决90%数据流转难题的实战方案 在数据流转的世界里,Apache NiFi就像一把瑞士军刀,但真正的高手都知道,单靠一个处理器很难完成复杂任务。本文将揭示五组经过实战检验的处理器组合,它们能像精密…...

玻尔兹曼脑伦理:测试从业者的哲学镜像与技术思辨

一个来自物理学的“Bug”报告在软件测试的日常中,我们习惯于追踪缺陷、验证逻辑、确保系统行为符合预期。我们深信,在一个确定性的输入下,系统应给出确定性的输出,世界的运行建立在可观测、可复现的规律之上。然而,物理…...

超自动化:RPA+AI Agent 深度融合

超自动化:RPAAI Agent 深度融合 📝 本章学习目标:本章展望未来趋势,帮助读者把握AI Agent发展方向。通过本章学习,你将全面掌握"超自动化:RPAAI Agent 深度融合"这一核心主题。 一、引言&#xf…...

DS4Windows终极指南:如何让PlayStation手柄在Windows电脑上完美运行

DS4Windows终极指南:如何让PlayStation手柄在Windows电脑上完美运行 【免费下载链接】DS4Windows Like those other ds4tools, but sexier 项目地址: https://gitcode.com/gh_mirrors/ds/DS4Windows 还在为PC游戏无法识别你的PlayStation手柄而烦恼吗&#x…...

3个关键步骤解决Firefox中GM_addElement脚本兼容性问题

3个关键步骤解决Firefox中GM_addElement脚本兼容性问题 【免费下载链接】scriptcat ScriptCat, a browser extension that can execute userscript; 脚本猫,一个可以执行用户脚本的浏览器扩展 项目地址: https://gitcode.com/gh_mirrors/sc/scriptcat Script…...

电路分析‘偷懒’神器:互易定理在求解复杂电阻网络时的实战技巧与避坑指南

电路分析‘偷懒’神器:互易定理在求解复杂电阻网络时的实战技巧与避坑指南 深夜的实验室里,老张盯着电路板上密密麻麻的电阻网络叹了口气。这个由47个电阻组成的测试电路,客户要求明天一早提交关键节点的电压分析报告。正当他准备熬夜列方程…...

Stable Diffusion WebUI 本地部署与创作:从零到出图

文章目录 Stable Diffusion WebUI 本地部署与创作:从零到出图 一、为什么选 Stable Diffusion 二、环境搭建 2.1 硬件 2.2 安装 2.3 GPU 加速 三、第一次出图 3.1 WebUI 界面分区 3.2 Prompt 3.3 参数推荐 四、模型与 LoRA 4.1 Checkpoint 模型 4.2 LoRA 五、ControlNet 精准控…...

前列腺 MRI-病理 3D 配准:弹性形变场 + 体素重建全流程

文章目录 前列腺 MRI-病理 3D 配准:弹性形变场 + 体素重建全流程 一、任务 二、环境 三、数据 3.1 结构 3.2 MRI 预处理 四、模型 4.1 弹性配准网络 4.2 损失函数 五、训练 六、评估 七、消融 八、调试 九、总结 代码链接与详细流程 购买即可解锁1000+YOLO优化文章,并且还有海…...

Linux CPUfreq动态调频技术与电源管理优化

1. Linux CPUfreq动态电压频率调节技术解析在嵌入式系统和移动设备开发中,电源管理一直是工程师面临的核心挑战之一。我曾参与过一个基于TI OMAP处理器的智能终端项目,当设备在播放视频时,电池续航只能维持3小时,而通过合理配置CP…...

高端化战略落地,爱芯元智如何撬动全球智驾市场?

2026年,智能汽车芯片的竞技场已经从“拼算力参数”全面转向“拼量产落地与商业生态”。在2026北京车展上,全球领先的AI推理系统级芯片(SoC)供应商爱芯元智(0600.HK)不仅正式宣告了智能汽车芯片产品线的高端…...

空间权重矩阵选哪个?用Stata实操对比邻接、反距离和经济地理矩阵的差异

空间权重矩阵选择指南:Stata实战中的邻接、反距离与经济地理矩阵对比 当研究者面对空间数据分析时,权重矩阵的选择往往成为关键决策点。不同的矩阵构建方法会直接影响空间自相关检验和空间回归模型的结果解读。本文将深入探讨三种主流空间权重矩阵——邻…...

SZBOX S100迷你主机评测:双4K输出与低功耗设计

1. SZBOX S100迷你主机开箱与硬件解析当拆开SZBOX S100的包装时,这台仅7.17.14.6厘米的金属机身给人第一印象就是难以置信的紧凑。全金属外壳不仅提供了良好的散热基础,磨砂表面处理也避免了指纹残留的问题。包装内除了主机本体,还包含一个US…...

告别踩坑!Ubuntu 22.04 LTS下RoboCup3D环境保姆级配置指南(含RoboViz编译加速技巧)

告别踩坑!Ubuntu 22.04 LTS下RoboCup3D环境保姆级配置指南(含RoboViz编译加速技巧) 在机器人仿真和人工智能足球赛事领域,RoboCup3D一直是最具挑战性和教育意义的平台之一。然而对于刚接触这个领域的研究者和学生来说&#xff0c…...

PAT乙级2024春B-1题解:用Python验证‘偶数个奇数’与‘最小和’的数学直觉

PAT乙级数学思维突破:从奇偶性到最小和的解题艺术 当键盘敲击声在考场此起彼伏,真正的高手早已看透题目背后的数学本质。PAT乙级考试中那些看似复杂的组合问题,往往只需要几个关键洞察就能迎刃而解。今天我们要探讨的"合成2024"问…...

Python的__init_subclass__协作定制

Python的__init_subclass__协作定制:解锁类继承的灵活控制 在Python的面向对象编程中,类的继承机制是构建复杂系统的核心。而__init_subclass__这一特殊方法,自Python 3.6引入以来,为开发者提供了更精细的类定制能力。它允许父类…...