小豪
小豪

小豪

Java


SpringBoot如何部署一个Web应用

这篇博客深入解析了如何将SpringBoot项目从默认的jar包部署模式转换为适用于外部服务器的war包部署方案。文章通过系统化的步骤拆解,揭示了从构建配置到运行环境的完整改造过程:包括修改pom.xml中的打包策略、添加Servlet API依赖、排除内置Tomcat容器、重构启动类实现Servlet初始化器的集成等核心操作。特别强调了启动类继承SpringBootServletInitializer这一容易被忽视的部署前提,为开发者提供了避免404错误的实践指南。在部署环节则展示了两种主流方案的实现路径——直接部署到Tomcat的webapps目录,以及通过server.xml配置实现的定制化部署。文章还延伸至Docker技术的应用场景,通过IDEA插件实现容器化部署的可能性。这种从传统部署到现代容器化部署的过渡,不仅展现了SpringBoot生态的灵活性,更引发读者思考:在微服务架构盛行的当下,war包部署是否仍是最佳选择?当部署需求涉及混合云环境时,如何平衡传统Tomcat与容器化部署的优劣?而通过Maven插件链的深度定制,又能否进一步提升自动化部署的效率?这些问题的答案或许就藏在每个开发者对架构演进的持续探索之中。--Qwen3

Java Docker Tomcat spring boot spring boot war tomcat server

如何减少代码中的if else,设计模式实战

本文通过一个实际开发场景展示了如何通过设计模式重构代码结构并消除冗余的if else逻辑。在处理流程回调接口时开发者发现原始代码存在开闭原则违背、面向对象特征缺失和代码耦合度高等问题。通过引入适配器模式将通用逻辑抽象化并解耦具体实现类,初步实现了代码结构的优化但未彻底解决策略选择的硬编码问题。继而运用策略模式将不同流程的处理逻辑封装为可替换的独立策略类通过环境类统一调度使系统具备了良好的扩展性但环境类的策略注册仍需修改代码。最终结合单例模式构建无状态的策略注册中心利用静态Map实现策略自动注册和动态获取完全解耦了新增流程与原有代码的依赖关系。这种渐进式优化过程揭示了设计模式在软件开发中的实际价值——它不仅是代码结构的组织工具更是应对需求变化的思维框架。当面对类似场景时你是否思考过:如何在保证系统灵活性的同时避免过度设计带来的复杂度?如果策略数量持续增长是否还有更高效的管理方式?或许这些思考正是推动代码质量持续演进的关键所在。--Qwen3

Java Strategy Pattern Singleton Pattern Factory Pattern Map Structure Dependency Injection

Gitlab CI/CD全自动部署实战

本文通过一次从手动部署到Gitlab CI/CD自动化实践的转变,揭示了传统部署模式与现代开发流程的效率鸿沟。当开发者面对重复的服务器操作时如何突破?Gitlab Runner的部署与Pipeline配置展示了从代码提交到生产环境的无缝跃迁,其核心价值在于将部署逻辑转化为可复用的配置文件。自动化流程不仅消除了人工干预的误差,更通过构建失败即时通知机制构建了风险防控网。当月度整改成为可自动触发的持续过程,当单元测试成为部署前的强制关卡,开发效率的跃升与质量保障形成了动态平衡。而Docker容器化与多环境一键部署的能力,更让软件交付突破物理服务器的限制。在自动化部署的浪潮中如何应对更复杂的微服务架构?如何在速度与安全之间寻找最优解?当镜像仓库的版本回溯与远程SSH部署成为可能,开发者是否准备好重新定义软件交付的边界?--Qwen3

DevOps Java Docker GitLab Runner CI/CD Automation

  • 1