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

Java后端底座从无到有的搭建(随笔)

文章目录

  • 开发模式的演变
    • 草创时期
    • 1.0时期(基座时期)
    • 1.1时期(低代码时期)
    • 2.0时期(无代码时期)


前言:本文是笔者在初创公司,一年多来Java后端服务底座搭建过程的总结,如有不当之处,还请各位大大指正。

开发模式的演变

草创时期

  该阶段是笔者跟随leader从大厂跳槽到初创公司的前两个月,这两个月公司内部只有我们两个后端(严格来说是四个,还有两个实习生),我们几个人当时开发后端服务的时候还是处于野蛮生长阶段,就是直接通过idea的spring项目快速生成器来构建一个项目的,如下图:
在这里插入图片描述
当时我们(主要是我还有两个实习生)并没有意识到这样做会有什么问题,都觉的理所当然,所有的教程辅导资料都是这么教的,不这样建还能怎么建,难道手写?不可能,绝对不可能!!!
  其实当时leader已经在暗搓搓的发力了。在我们还在纠结Java 持久层框架是否使用mybatis-plus,代码生成器使用哪个插件的时候,leader已经把他设想中的所有工具内嵌入公司的基础底层框架中了。这里就就不得不提到另外一个项目搭建工具了——archetype,它是maven自带的一个maven工程创建工具,可以通过自定义模板来生成对应的应用架构。我们当时还不理解这个东西是怎么用的,原理是什么,只是在某一天leader和我们说:“今后公司的所有工程项目的创建都是用这个框架来实现。” 然后我们就进入了服务端开发的1.0 时期。

1.0时期(基座时期)

  这个阶段定下了公司后续所有项目结构的基本风格,为后续版本的迭代开发提供了坚实的理论依据(其实就是方便后来的一些小白读懂代码,也有一点方便我们改代码的意思在里面)。
  上面这句话并不是BOSS的原话,不过意思差不多,后面这一年多的开发过程我们的确深有感触。当你接触其他人写的新项目的时候,你会发现项目结构是如此的相似,持久层、业务层、控制层的关系是如此的明显,以至于你会有一种一切尽在掌控中的感觉,这为你接手新项目并进行相应的迭代更新打造了一个良好的开头。不得不说这一步棋的确是点睛之笔,秒到绝巅(拍彩虹屁,略略略~~)
  当然光有项目骨架是毫无用处的,它只能帮你搭建一个抽象的架构,具体的业务逻辑有哪些、代码需要如何去写这又是我们要思考的问题了?
  后端服务的业务逻辑归根结底无外乎就是对数据的crud,那么其实只需要有业务表结构,我们是否就可以一键生成对应的crud代码,从而无需开发一些简单的业务逻辑?答案是显而易见的——可以。
  大约是进入公司的第三个月底到第四个月初,leader基于freemarker模版组件写了一个属于公司内部的代码生成器插件,其实本质上和通用工具中的代码生成器没有太多的区别,唯一一点的区别就是它是高度适配公司的基础架构,可以做到只配置数据库地址,就可以生成符合我们代码风格的从持久层到控制层的所有代码。(我们当时问为什么不用现成的工具,还要自己开发,leader说自己开发的知道源码,后期出现什么问题也好调整,用别人的出了问题都不知道怎么解决,姑且也就信了吧)这个插件出来以后,我们便进入了后端服务开发1.1时期。

1.1时期(低代码时期)

  在这个阶段其实已经完成核心架构基座的开发逻辑,我们直至今天也仍旧处于这个时期内。在这个阶段我们面临的问题基本就是业务向的问题了,这个阶段的核心逻辑就是:尽可能的抽象出通用工具,减少非必要的人为错误,提高开发效率
  从第四个月进入低代码时期后,我们造了很多轮子,像是grpc远程服务调用组件、websocket服务端组件、前后端消息通信协议组件(SSE)等等,这些极大的提高了我们的工作效率。但是随着轮子越来越多,后端服务的开发/学习成本也越来越高,在可预期的范围内它将会成为一个限制开发效率的瓶颈,那么是否有方案可以解决它呢?答案暂时不确定,我们设想过将这些轮子抽象出来管理,通过配置化的流程将现有功能互相组合从而达到新功能的目的,但碍于种种原因我们并未真正付诸于行动。当然市面上可能已经出现了一些成熟的解决方案,我们还在持续关注中,期待能够早日进入2.0时期(无代码时期)

2.0时期(无代码时期)

  敬请期待~~

相关文章:

Java后端底座从无到有的搭建(随笔)

文章目录 开发模式的演变草创时期1.0时期(基座时期)1.1时期(低代码时期)2.0时期(无代码时期) 前言:本文是笔者在初创公司,一年多来Java后端服务底座搭建过程的总结,如有不…...

Rust介绍与开发环境搭建

Rust 是一种系统编程语言,它专注于内存安全、并发和性能。它是由 Mozilla 开发的,并得到了许多社区的广泛支持。Rust 的设计理念是“安全 by default”,这意味着你不需要特殊的工具或技巧来编写安全的代码。 Rust 的主要特点: 内…...

本地TCP通讯(C++)

概要 利用TCP技术&#xff0c;实现本地ROS1和ROS2的通讯。 服务端代码 头文件 #include <ros/ros.h> #include "std_msgs/String.h" #include "std_msgs/Bool.h" #include <iostream> #include <cstring> #include <unistd.h>…...

docker 安装jenkins

使用 Docker 安装 Jenkins 是一种快速、方便的方法&#xff0c;可以避免本地环境的复杂依赖。以下是通过 Docker 安装 Jenkins 的基本步骤&#xff1a; 安装 Docker&#xff1a; 如果你的系统尚未安装 Docker&#xff0c;请先安装 Docker。对于 Ubuntu 系统&#xff0c;可以通过…...

电脑黑屏什么都不显示怎么办 电脑开机黑屏不显示任何东西的4种解决办法

相信有很多网友都有经历电脑开机黑屏不显示任何东西&#xff0c;找了很多方法都没处理好&#xff0c;其实关于这个的问题&#xff0c;首先还是要了解清楚开机黑屏的原因&#xff0c;才能够对症下药&#xff0c;下面大家可以跟小编一起来看看怎么解决吧 电脑开机黑屏不显示任何…...

MT8781核心板_MTK8781安卓核心板规格参数

MT8781安卓核心板以其强大的性能和高效的能耐备受瞩目。其八核CPU架构包括(2x Cortex-A76 2.2GHz 6x Cortex-A55 2.0GHz)&#xff0c;以及高性能的Arm Mali G57级GPU。同时&#xff0c;配备高达2,133MHz的LPDDR4X内存和快速的UFS 2.2级存储&#xff0c;大大加速了数据访问速…...

HTML知识点

HTML 【一】HTML简介 【1】什么是HTML HTML是一种用于创建网页结构和内容的超文本标记语言&#xff0c;它是构建网页的基础。为了让浏览器正确渲染页面&#xff0c;我们必须遵循HTML的语法规则。浏览器在解析网页时会将HTML代码转换为可视化的页面&#xff0c;所以我们在浏览…...

聊聊分库分表

文章导读 背景介绍 随着互联网技术的发展&#xff0c;数据量呈爆炸性增长。大数据量的业务场景中&#xff0c;数据库成为系统性能瓶颈的一个主要因素。当单个数据库包含了太多数据或过高的访问量时&#xff0c;会出现查询缓慢、响应时间长等问题&#xff0c;严重影响用户体验。…...

小米标准模组+MCU 快速上手开发(二)——之模组串口调试

小米标准模组MCU 开发笔记之固件调试 背景技术名词简介● 小米IoT开发者平台● 小米IoT 模组● 固件● OTA● CRC32 固件双串口调试● MHCWB6S-IB 模组资料下载● MHCWB6S-IB 模组管脚图● 上电调试 背景 小米标准模组MCU的开发过程中&#xff0c;由于部分官方资料较为古早&am…...

Ubuntu22.04和Windows10双系统安装

概要 本篇演示Ubuntu22.04和Windows10双系统的安装。先安装Ubuntu22.04&#xff0c;再安装Windows10。 一、说明 1、电脑 笔者的电脑品牌是acer(宏碁/宏基) 电脑开机按F2进入BIOS 电脑开机按F12进入Boot Manager 2、U盘启动盘 需要用到两个U盘启动盘 &#xff08;1&a…...

重新安装VSCode后,按住Ctrl(or Command) 点击鼠标左键不跳转问题

重新安装VSCode后&#xff0c;按住Ctrl&#xff08;or Command&#xff09; 点击鼠标左键不跳转问题 原因&#xff1a;重新安装一般是因为相应编程语言的插件被删除了或还没有下载。 本次是由于Python相关的插件被删除了&#xff0c;因此导致Python无法跳转。 解决办法 在vs…...

QPaint绘制自定义仪表盘组件01

网上抄别人的&#xff0c;只是放这里自己看一下&#xff0c;看完就删掉 ui Dashboard.pro QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomm…...

华为笔记本原厂系统镜像恢复安装教程方法

1.安装方法有两种&#xff0c;一种是用PE安装&#xff0c;一种是华为工厂包安装&#xff08;安装完成自带F10智能还原&#xff09; 若没有原装系统文件&#xff0c;请在这里远程恢复安装&#xff1a;https://pan.baidu.com/s/166gtt2okmMmuPUL1Fo3Gpg?pwdm64f 提取码:m64f …...

互联网高科技公司领导AI工业化,MatrixGo加速人工智能落地

作者&#xff1a;吴宁川 AI&#xff08;人工智能&#xff09;工业化与AI工程化正在引领人工智能的大趋势。AI工程化主要从企业CIO角度&#xff0c;着眼于在企业生产环境中规模化落地AI应用的工程化举措&#xff1b;而AI工业化则从AI供应商的角度&#xff0c;着眼于以规模化方式…...

Apache服务

目录 引言 一、常见的http服务程序 &#xff08;一&#xff09;lls &#xff08;二&#xff09;nginx &#xff08;三&#xff09;Apache &#xff08;四&#xff09;Tomcat 二、Apache特点 三、Apache服务的安装 &#xff08;一&#xff09;yum安装及配置文件 1.配置…...

【Spring连载】使用Spring Data访问 MongoDB(二)----Template API

【Spring连载】使用Spring Data访问 MongoDB&#xff08;二&#xff09;----Template API 一、方便的方法二、执行回调函数Execute Callbacks三、Fluent API四、异常转换五、域类型映射六、配置6.1 默认读取首选项Read Preference6.2 WriteResultChecking策略6.3 默认写安全Wri…...

手写table表格(一表头多数据)

手写table表格&#xff08;一表头多数据&#xff09; <template><div class"table-info"><div class"info-list"><div class"header-wrapper"><div class"columns-title" v-for"(i, k) in columns&q…...

python3 flask 实现对config.yaml文件的内容的增删改查,并重启服务

config.yaml配置文件内容 功能就是userpass下的用户名和密码做增删改查&#xff0c;并重启hy2服务 auth:type: userpassuserpass:csdn: csdnlisten: :443 masquerade:proxy:rewriteHost: trueurl: https://www.bing.com/type: proxy tls:cert: /root/hyst*****马赛克******er…...

ADO世界之“对象”

目录 一、Command 对象 1.Command 对象 2.语法 3.属性 4.方法 5.集合 二、Connection 对象 1.Connection 对象 2.语法 3.属性 4.方法 5.事件 6.集合 三、Error 对象 1.Error 对象 2.语法 3.属性 四、Parameter 对象 1.Field 对象 2.语法 3.属性 4.方法 …...

LeetCode59-螺旋矩阵II

参考链接&#xff1a;代码随想录->螺旋矩阵II 关键是学视频链接里面的编码思想&#xff0c;然后背下来 class Solution { public:vector<vector<int>> generateMatrix(int n) {vector<vector<int>> resvector(n,vector<int>(n,0));int sx0,s…...

通信确定性可视化冗余现场总线技术开发白皮书(能源化工交通高可靠行业 Profibus DP CAN PROFINET EtherNet/IP SPE APL)

1.前言现场总线是工业物联网的核心支撑技术&#xff0c;但当前国际主流方案在国内应用中普遍存在开发门槛高、硬件成本高、调试维护复杂、冗余配置昂贵等问题&#xff0c;难以满足中小型自动化项目及国产控制系统对高性价比、高可靠性通信的需求。CANWeb现场总线深度融合CAN的高…...

2025年9月中国电子学会青少年软件编程(图形化)等级考试试卷(一级)答案 + 解析

25年3月一级真题在线测评&#xff1a;http://jw.52coding.site/s/mwIJDR 青少年软件编程&#xff08;图形化&#xff09;等级考试试卷&#xff08;一级&#xff09; 一、单选题(共25题&#xff0c;共50分) 1.当前舞台背景为最后一个背景“背景3”&#xff0c;使用“下一个背景”…...

10个C语言开源项目解析与学习指南

1. 10个值得学习的C语言开源项目解析 作为一名在嵌入式领域摸爬滚打多年的开发者&#xff0c;我深知阅读优秀开源代码对提升编程能力的重要性。今天要分享的这10个C语言项目&#xff0c;每一个都是精炼而实用的典范&#xff0c;特别适合想要深入理解系统编程、网络协议和底层实…...

万兴剧厂AI漫剧APP2025推荐,打造个性化漫剧体验

万兴剧厂AI漫剧APP2025推荐&#xff0c;打造个性化漫剧体验在当今数字化娱乐的浪潮中&#xff0c;漫剧以其独特的表现形式和丰富的内容吸引了众多用户。据《2025中国数字娱乐行业发展报告》显示&#xff0c;2025年漫剧市场规模持续增长&#xff0c;用户对于优质漫剧的需求也日益…...

Inconsolata字体高效使用实战指南:提升编程体验的专业字体方案

Inconsolata字体高效使用实战指南&#xff1a;提升编程体验的专业字体方案 【免费下载链接】Inconsolata Development repo of Inconsolata Fonts by Raph Levien 项目地址: https://gitcode.com/gh_mirrors/in/Inconsolata 作为开发者&#xff0c;我们每天与代码打交道…...

抗DDoS设备性能测试方法详解:专业仪表如何精准评估防护能力

摘要抗DDoS设备的防护效果如何&#xff0c;单靠厂商自测数据不可信&#xff0c;需要专业网络安全测试仪表进行第三方验证。本文系统梳理SYN Flood、UDP Flood、HTTP Flood、反射放大、慢速攻击等主流DDoS攻击的测试方法&#xff0c;结合运营商级集采测试标准&#xff0c;详解清…...

巴旦木脱青皮的设计【solidworks三维、cad图纸、论文、答辩稿】

巴旦木脱青皮设计是农产品加工领域的关键环节&#xff0c;其核心作用在于通过机械结构与工艺参数的协同优化&#xff0c;实现青皮与果仁的高效分离&#xff0c;同时避免果仁损伤。该设计需综合考虑物料特性、动力传递效率及设备稳定性&#xff0c;通过三维建模与二维图纸的精准…...

AugmentCode无限续杯插件:突破登录限制的自动化解决方案

AugmentCode无限续杯插件&#xff1a;突破登录限制的自动化解决方案 【免费下载链接】free-augment-code AugmentCode 无限续杯浏览器插件 项目地址: https://gitcode.com/gh_mirrors/fr/free-augment-code 痛点解析&#xff1a;开发者的账户管理困境 在软件开发与测试…...

当生物黑客入侵脑机接口:安全测试救了我们公司

在脑机接口&#xff08;Brain-Computer Interface, BCI&#xff09;技术飞速发展的今天&#xff0c;软件测试从业者正面临前所未有的安全挑战。作为一名资深测试工程师&#xff0c;我亲历了一场惊心动魄的生物黑客入侵事件——一场针对我们公司脑机接口产品的攻击险些导致灾难性…...

告别盲目复位!用KEIL5的.axf文件实现“热插拔”调试,保留MCU内存状态全记录

深入解析KEIL5调试黑科技&#xff1a;如何通过.axf文件实现MCU内存状态无损调试 调试嵌入式系统时&#xff0c;最令人沮丧的莫过于遇到偶发故障却无法复现现场。传统调试方式往往需要复位MCU&#xff0c;导致宝贵的运行时状态信息瞬间消失。这种"盲人摸象"式的调试体…...