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

多租户下的ERP系统的仓储管理模块分析设计茸

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芬俟洞诿

相关文章:

多租户下的ERP系统的仓储管理模块分析设计茸

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

OpenClaw容器化部署:Docker打包Kimi-VL-A3B-Thinking多模态服务的完整流程

OpenClaw容器化部署:Docker打包Kimi-VL-A3B-Thinking多模态服务的完整流程 1. 为什么选择容器化部署OpenClaw 去年我在本地尝试部署OpenClaw对接Kimi-VL多模态模型时,经历了整整三天的依赖地狱。不同版本的CUDA驱动、Python包冲突、系统库缺失等问题让…...

python 输出菱形(两种方法)

方法一rows int(input("请输入菱形的边长&#xff1a;")) row 1"""打印上层""" while row < rows:col 1while col < rows - row:print( ,end )col 1for i in range(row): print(*,end )print( ,end )print()row 1"…...

开发者利器:OpenClaw+千问3.5-27B自动生成API文档

开发者利器&#xff1a;OpenClaw千问3.5-27B自动生成API文档 1. 为什么需要自动化API文档生成 作为一个长期维护开源项目的开发者&#xff0c;我深刻体会到维护API文档的痛苦。每次代码更新后&#xff0c;手动同步文档不仅耗时&#xff0c;还容易遗漏细节。直到发现OpenClaw与…...

ILI9225 TFT驱动库:Arduino 2.2英寸SPI显示屏开发指南

1. 项目概述TFT_22_ILI9225 是一款专为基于 ILI9225 显示控制器的 2.2 英寸 TFT LCD 模块设计的 Arduino 驱动库。该模块物理尺寸为 2.2 英寸&#xff0c;分辨率为 176220 像素&#xff0c;采用四线 SPI&#xff08;Serial Peripheral Interface&#xff09;接口与主控通信&…...

OpenClaw学术研究流:Phi-3-mini-128k-instruct自动生成论文综述

OpenClaw学术研究流&#xff1a;Phi-3-mini-128k-instruct自动生成论文综述 1. 为什么需要自动化文献综述 每次开始新的研究课题时&#xff0c;最让我头疼的就是文献综述环节。作为独立研究者&#xff0c;我常常需要花费数周时间阅读上百篇论文&#xff0c;手动整理关键观点和…...

为什么外贸企业需要私域CRM系统?公域CRM差在哪?

摘要&#xff1a;在当今全球化竞争日益激烈、B2B平台流量红利见顶的背景下&#xff0c;传统外贸企业的获客成本正在呈指数级上升。越来越多的外贸人发现&#xff0c;花大价钱在公域平台买来的线索&#xff0c;往往面临着“询盘多、成交少、流失快”的尴尬局面。现在做外贸&…...

工艺智能如何重塑汽车制造全流程?

如果说传统制造工艺是依赖经验的“手工账本”&#xff0c;那么工艺智能就是实时迭代的“智能中枢”。在汽车这个研发复杂度最高、工艺挑战最集中的行业&#xff0c;从设计图纸到车间落地&#xff0c;每一个环节都藏着效率与质量的博弈。当人工智能深度融入行业Know-How&#xf…...

精度套利:藏在盘口缝隙里的稳定机会

我们先来看 BN 上一个交易对。现货侧&#xff0c;PEPE/USDT 的价格精度是 1e-8&#xff1b; 合约侧&#xff0c;1000PEPEUSDT 的价格精度是 1e-7。 如果把合约价格换算回 PEPE/USDT 的单位&#xff0c;那么它对应的价格精度其实是 1e-10。 这意味着&#xff0c;现货和合约在同一…...

开发者效率套件:OpenClaw+千问3.5-27B自动化代码审查

开发者效率套件&#xff1a;OpenClaw千问3.5-27B自动化代码审查 1. 为什么需要AI辅助代码审查&#xff1f; 作为一个长期在开源社区摸爬滚打的开发者&#xff0c;我经历过太多深夜提交代码后第二天被reviewer指出低级错误的尴尬时刻。直到上个月在本地部署了OpenClaw千问3.5-…...

【2026年最新版】Java JDK安装、环境配置教程 (图文非常详细)

1. 下载 JDK Java Downloads | Oracle 以JDK21为例&#xff1a; 选择适合 JDK 版本&#xff0c;本文选择JDK 21在Windows x64环境下安装 x64 Installer。 选择建议&#xff1a; 普通用户&#xff1a;选择 x64 Installer&#xff0c;简便、快速。开发者或需要灵活控制安装位…...

[实战复盘] 妙手ERP铺货还是太慢?教你用 Python + RPA 彻底打通电商上架的“最后一公里”

前言&#xff1a;ERP 是工具&#xff0c;但“你”才是那个流水线工人 在店群运营和跨境多平台铺货的圈子里&#xff0c;妙手 ERP 绝对是大家绕不开的利器。它帮我们解决了很多商品搬运的基础问题。 但在真实的业务一线&#xff0c;很多电商操盘手依然痛苦不堪。为什么&#x…...

QCustomPlot 深度解析:从渲染架构到源码内幕

一、QCustomPlot 是什么&#xff0c;不是什么QCustomPlot 是一个 Qt 绘图库&#xff0c;核心就两个文件&#xff1a;qcustomplot.h qcustomplot.cpp。不是 Qt 官方库&#xff0c;不属于 Qt 模块&#xff0c;但做得比 Qt Charts 干净得多。设计哲学&#xff1a;扩展 Qt 的 QPai…...

云PDM——制造业研发数据管理的“降维打击”与国产突围

提到最让中国人骄傲的两个产业&#xff0c;非制造业和互联网莫属。当这两者发生深度化学反应时&#xff0c;真正落地的绝不是空泛的概念&#xff0c;而是实打实的技术赋能。在这波浪潮中&#xff0c;云PDM&#xff08;产品数据管理&#xff09;绝对算得上是搅动制造业研发端的一…...

创建私有云主机

1. 环境准备与规划在搭建IaaS平台之前&#xff0c;合理的硬件与网络规划是成功的关键。本环境基于VMware Workstation搭建&#xff0c;采用双节点架构。1.1 硬件资源配置请严格按照以下标准配置虚拟机&#xff0c;资源不足会导致安装失败或运行卡顿。表格组件内存处理器硬盘网卡…...

C# OnnxRuntime 部署 RMBG-2.0 实现高精度背景去除

目录 说明 RMBG-2.0 是什么 BiRefNet 架构的核心思想 效果 模型信息 项目 代码 下载 模型下载 说明 背景去除是图像处理中的一个经典难题。从早期的颜色键控、GrabCut&#xff0c;到如今基于深度学习的分割模型&#xff0c;技术的演进让抠图这件事变得越来越智能。而…...

OpenClaw备份策略:gemma-3-12b-it自动化数据保护方案

OpenClaw备份策略&#xff1a;gemma-3-12b-it自动化数据保护方案 1. 为什么需要AI驱动的自动化备份&#xff1f; 上个月我的移动硬盘突然罢工&#xff0c;导致三个月的项目文档全部丢失。这次惨痛经历让我意识到&#xff1a;传统备份方案存在两个致命缺陷——依赖人工记忆和缺…...

OpenClaw免费模型推荐与配置指南!

OpenClaw免费模型推荐与配置指南 OpenClaw(小龙虾)作为开源 AI 智能体框架,本身不内置大模型,而是支持灵活对接各类 AI 服务。本文整理了 2026 年最新的完全免费、好用稳定的模型方案,涵盖云端 API 和本地私有化部署,附带详细的配置步骤,帮你零成本玩转 OpenClaw。 一…...

主键、外键和约束:让数据库“有规矩”才能不出错!|转行学DB第5天

为什么你的表里会混进“奇怪的数据”&#xff1f;三分钟搞懂数据库的“家规”大家好呀&#xff01;我是数据库小学妹&#x1f44b;一个正在从设计转行学数据库的"萌新"。 前几篇我们学会了建表、插数据、查数据。但有个问题一直让我头疼&#xff1a;我怎么保证同一张…...

第七届全球校园人工智能算法精英大赛-算法巅峰赛产业命题赛第3赛季优化题--多策略混合算法

前言 全球校园人工智能算法精英大赛”是江苏省人工智能学会举办的面向全球具有正式学籍的全日制高等院校及以上在校学生举办的算法竞赛。其中的算法巅峰赛属于产业命题赛道&#xff0c;这是第3赛季&#xff0c;这次优化题的主题是 “碳中和”。 回顾 第七届全球校园人工智能算…...

鸿蒙_ArkUI组件同时支持双击和单击事件

我们常用的点击事件是onClick&#xff0c;想要实现双击需要用TapGesture手势实现&#xff0c;那么如果一个组件同时需要支持单击和双击&#xff0c;则需要使用GestureGroup&#xff0c;我们新建一个页面来测试一下&#xff1a;Entry Component struct TestDoubleClick {State m…...

动态规划——01背包问题、完全背包(python、一维DP)

01-背包问题&#xff1a;从最大容量开始&#xff0c;从后往前遍历背包容量每种物品只能选择一次。物品种类为n&#xff0c;背包容量为k。从最大容量开始&#xff0c;从后往前遍历背包容量&#xff0c;小于当前物品容量的背包大小不遍历&#xff0c;即遍历到w[i]即可。&#xff…...

3.一文看懂反向传播:从单个神经元到 PyTorch 自动求导

反向求导&#xff0c;多层次对应一个神经&#xff0c;单个神经元场景 学习这一篇的前提是&#xff0c;已经学会了梯度算法和线性结构算法&#xff0c;不明白的可以去看我之前的文章。 前面看不懂的&#xff0c;直接跳转到 “ 反向传播的流程 ” 底层的数学算法 z 是中间变量 u …...

【国家卫健委《医疗卫生机构数据安全管理指南》强制落地倒计时】:PHP脱敏工具未升级?3类高危场景已触发监管预警!

第一章&#xff1a;国家卫健委《医疗卫生机构数据安全管理指南》强制落地背景与合规红线近年来&#xff0c;医疗健康数据泄露事件频发&#xff0c;患者隐私保护压力陡增。2023年12月&#xff0c;国家卫生健康委员会正式印发《医疗卫生机构数据安全管理指南》&#xff08;国卫办…...

string的特性及使用

string这个词很容易让我们联想到str&#xff0c;也就是字符串&#xff0c;实际上string和字符串的关联性还是很强的。 很多字符串的题目都是string类的形式出现的&#xff0c;日常工作中为了方便使用都是用的string类&#xff0c; 标准string类 使用string类时&#xff0c;必须…...

(文档)第121讲:Oracle兼容工具—orafce使用技巧

目标 • orafce概述 • orafce安装 • orafce应用案例 orafce概述 orafce(Oracle Functions for PostgreSQL)是一个开源项目&#xff0c;旨在为 PostgreSQL 数据库提供一些 Oracle 数据库中缺失或行为不同的函数。该项目通过在 PostgreSQL 中实现这些函数&#xff0c;帮助…...

QGIS之四十三python处理数据

1、调出Python控制台 2、新建python脚本 右边的窗口可以拉过来 3、让AI根据你的需求写python脚本 比如要进行文本转shp,让AI写python脚本,拷贝脚本进来,保存文件 4、执行脚本...

工业以太网无线网桥 SG-WX-Bridge v2.0|免布线、一对多、即插即用,工业现场无线通信神器

工厂布线麻烦、距离远、施工成本高&#xff1f;设备移动频繁、有线网扯来扯去易损坏&#xff1f;三格电子SG-WX-Bridge v2.0 工业以太网无线网桥&#xff0c;专为工业现场打造&#xff0c;把有线网变无线&#xff0c;1 台 AP 最多带 8 台 STA&#xff0c;Profinet/EtherNet/IP/…...

机器学习经验总结整理

1.一个标准的机器学习项目流程&#xff08;一定要记住顺序&#xff09;很多新手觉得乱&#xff0c;是因为没按流程想问题。做任何项目&#xff0c;脑子里要有这根“流水线”&#xff1a;定义问题 → 是分类还是回归还是聚类&#xff1f;业务目标是什么&#xff1f;获取数据 → …...

千问3.5-27B模型微调实战:提升OpenClaw任务成功率

千问3.5-27B模型微调实战&#xff1a;提升OpenClaw任务成功率 1. 为什么需要微调千问3.5-27B&#xff1f; 当我第一次将OpenClaw接入千问3.5-27B时&#xff0c;发现它在简单任务上表现不错&#xff0c;但遇到复杂操作链时经常"卡壳"。比如让它整理一周的会议录音文…...