
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
写一个通用方法,到底该不该加static?工具类为什么要私有化构造器?为什么 Controller、Service、Mapper 不设计成static方法直接调用,非要注入一个对象?和到底有什么本质区别?很多时候我们只是死记硬背了规范,却忘了其背后的核心逻辑。这篇文章将从“对象”这个核心视角,把这些问题一次讲清楚。场景是否有状态 / 需要被代理?推荐设计典型例子纯计算 / 转换❌ 无Static
在企业级项目中,开发、测试、生产环境差异巨大。合理管理配置文件可以提高部署效率、降低风险,同时保证敏感信息安全。本文总结了多环境配置规范、profile 激活逻辑及部署注意事项。resources:开发默认配置、dev profile外部 config:生产/测试环境差异 + 敏感信息profile 激活:jar 默认值 → 外部 config 覆盖 → 命令行覆盖安全:敏感信息不打包入 jar部
Configuration → 这是配置入口@ComponentScan → 扫 Spring Bean@MapperScan → 扫 MyBatis Mapper告诉 Spring:“这是组件入口,把我的 Bean 和 Mapper 都装进来”内容作用配置类,扫 Bean,扫 Mapper告诉 Spring Boot “自动 Import 这个配置类”,实现无感加载路径与格式,每行写全限定类名,
Maven 依赖解决的是“类路径”问题,而 Spring Bean 加载解决的是“容器管理”问题,两者不能混为一谈。对比维度Maven 依赖Spring Bean 加载作用确保.class文件在编译和运行时能被找到。确保类的实例被 Spring 创建并管理。生效方式pom.xml声明。扫描或 SPI 机制导入。核心误区以为引入了 Jar 包,Spring 就会自动接管。忘了告诉 Spring 去哪
本文解析了 Docker Compose 中常见命令的使用场景和区别。核心在于理解 Docker 生命周期分为 Build(构建镜像)和 Run(运行容器)两个阶段。docker compose up -d 直接启动容器,--build 参数强制重新构建镜像,而 --no-cache 则完全忽略缓存构建。关键区分点在于修改内容属于镜像内部(需重新构建)还是运行配置(只需重启)。开发模式下通过 Vo
Spring Boot配置优先级解析:从命令行到默认值的完整层级。优先级从高到低依次为:命令行参数→JVM系统属性→环境变量→外部application.yml→内部application.yml→@PropertySource→默认值。关键原则是"离启动命令越近优先级越高",如命令行参数(--server.port)会覆盖所有其他配置。实战示例展示了多层级配置的最终生效规则,
MySQL 服务在 Docker 中的两种部署方式:1)通过 Dockerfile 构建自定义镜像,适合生产环境和团队标准化部署,具有高度可控性和可复用性;2)通过 Docker Compose 直接拉取官方镜像,适合本地开发和测试,具有快速启动和灵活配置的特点。两种方式各有优势,可根据实际场景选择使用,甚至结合使用:生产环境用自定义镜像,开发环境用 Compose 快速启动官方镜像。
本文探讨了API签名系统中Host字段处理的关键问题,分析了端口差异、多层代理影响及解决方案。核心观点包括:1)签名系统应忽略默认端口但保留非默认端口;2)Nginx/CDN等代理可能修改Host头,需统一规范化处理;3)提出canonicalHost规则,建议客户端与服务端采用相同处理逻辑;4)该设计兼顾HTTP协议兼容性和多层代理环境下的稳定性。通过标准化Host处理流程,可有效避免因网络层H
本文详细介绍了企业团队如何规范使用GitLab进行代码管理。首先从创建空项目开始,讲解如何上传初始框架代码到main分支并创建dev开发分支。重点说明了分支保护设置,包括禁止直接推送main和dev分支,必须通过Merge Request合并。然后详细阐述了团队协作开发流程:开发者从dev创建个人分支开发,提交代码后发起MR请求,经审核后合并到dev分支,最终稳定版本合并到main分支。这种流程确
Maven 生命周期不是简单的按钮集合,而是一套严谨的软件工程流水线。开发时:多用compile快速验证。联调时:必用install同步仓库。发布前:务必保证纯净。







