城市直播房产教育博客汽车
投稿投诉
汽车报价
买车新车
博客专栏
专题精品
教育留学
高考读书
房产家居
彩票视频
直播黑猫
投资微博
城市上海
政务旅游

SpringBoot快速开发企业级Admin管理后台

8月20日 艮山观投稿
  介Intro
  Erupt是一个低代码全栈类框架,它使用Java注解动态生成页面以及增、删、改、查、权限控制等后台功能。
  零前端代码、零CURD、自动建表,仅需一个类文件简洁的注解配置,快速开发企业级Admin管理后台。
  提供企业级中后台管理系统的全栈解决方案,大幅压缩研发周期,专注核心业务。
  完美取代代码生成器,开发后台管理系统更优解!特性Features易于上手:会简单的SpringBoot基础知识即可使用简单:仅需了解Erupt与EruptField两个注解即可上手开发代码简洁:前端零代码,后端template、controller、service、dao都不需要,仅需一个类文件即可敏捷开发:仅单个。java文件即可实现后台管理功能,专注业务与核心功能的研发快速迭代:需求变更仅需修改或添加注解配置即可,迭代速度比需求讨论速度还快功能强大:动态条件处理,支持增删改查等功能代理接口,Session存储机制选择,行为日志记录等自动建表:依托于JPA可自动帮你完成数据库建表相关工作低侵入性:几乎所有功能都围绕注解而展开,不影响SpringBoot其他功能或三方库库的使用多数据源:支持:MySQL、Oracle、SQLServer、PostgreSQL、H2,甚至支持MongoDB大量组件:滑动输入、时间选择、一对多、图片上传、代码编辑器、自动完成、树、多对多、地图等23类组件丰富展示:普通文本、二维码、链接、图片、HTML、代码段、iframe、swf等代码生成:erupt代码已经足够简洁,代码生成器可进一步提升开发效率高扩展性:支持自定义数据源实现、自定义页面、动态权限管理、生命周期函数、自定义OSS等界面美观:每个交互都精心设计,产品思维打磨,只为了更好的操作体验权限管理:用户管理、角色管理、组织管理、菜单管理、登录日志、操作日志等高安全性:可靠的安全机制,登录白名单,权限验证,注解项检查,细颗粒度权限控制,为你的数据保驾护航前后端分离:后端与前端可分开部署响应式布局:支持PC端手机端等各种规格的设备中使用无需二次开发:仅需引用jar包即可!支持扩展页面:可开发自定义页面,自定义弹出层,且支持:原生H5FreemarkerThymeleaf等方式渲染演示截图Screenshot
  为什么要做Erupt?
  无论开发怎样的系统,都需要配套的管理后台做数据支撑,是软件开发中必不可少的一环,但实际开发中存这无法规避的痛点,如:开发效率低下、接口对接繁琐、界面差强人意、代码重复、有安全漏洞,导致开发成本极高。
  虽然近些年来代码生成器成了后台开发的新宠,但它真的是后台开发的最优解吗?
  代码生成器的本质还是生成繁琐的前端与后台代码,一旦修改后期生成的代码很难合并,想想MybatisGenerator,基本上就是一次性的东西,虽然减轻了部分工作,可解决方式并非最佳。
  开发后台管理系统大部分情况下只想做个普通的增删改查界面,用于数据管理,类似下面这种:
  Erupt(name简单的例子,powerPower(importabletrue,exporttrue))Table(nametsimple)数据库表名EntitypublicclassSimpleextendsBaseModel{EruptField(viewsView(title文本),editEdit(title文本,notNulltrue,searchSearch))privateSEruptField(viewsView(title数值,sortabletrue),editEdit(title数值,searchSearch))privateFEruptField(viewsView(title布尔),editEdit(title布尔))privateBEruptField(viewsView(title时间),editEdit(title时间,searchSearch(vaguetrue)))privateD}
  功能体验
  这个界面虽然用VueAntDesignSSM也能做出个大概,但仔细观察会发现它有大量细节功能如:有按钮可以查询、新增、批量删除、excel导入导出可以对数据做筛选、隐藏某列、按某列排序表格有分页与汇总,可预览单行数据多种组件、有校验规则
  全部实现这些仅前端就需要大量的代码,后端的接口与业务逻辑更不在少数。
  但可以看到,用erupt只需要30几行代码就能完成,完全不需要了解AngularReactVueJquery
  而且不需要了解JavaScriptHTMLCSS
  甚至不需要了解SpringMVCMybatisSQL
  即便没学过erupt也能猜到大部分配置的作用,只需要简单配置就能完成所有后台页面开发。
  这正是建立erupt的初衷,对于大部分常用页面,应该使用最简单的方法来实现,甚至不需要学习各种框架和工具,专注核心业务,告别996,省下的时间做自己喜欢做的事,从此不再因为繁琐的后台开发而焦头烂额。下载使用Download
  下载最新的JAR或通过Maven获取。!用户权限管理dependencygroupIdxyz。eruptgroupIderuptupmsartifactIdversionLATESTVERSIONversiondependency!接口数据安全dependencygroupIdxyz。eruptgroupIderuptsecurityartifactIdversionLATESTVERSIONversiondependency!后台WEB界面dependencygroupIdxyz。eruptgroupIderuptwebartifactIdversionLATESTVERSIONversiondependency
  详细使用步骤模块说明Moduleerupteruptannotation核心注解声明eruptcore核心功能实现eruptdata数据实现包eruptjpa关系型数据库erupt实现eruptmongodbmongodb数据库erupt实现eruptjob定时任务功能,支持动态定时任务,邮件发送,任务ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志a等功能eruptsecurity接口数据安全模块eruptupms用户权限管理erupttpl支持在erupt中自定义页面,自定义图表,自定义弹出层,模板引擎支持:FreeMarkerThymeleaf原生H5Velocity等eruptgenerator代码生成器,通过简单配置,生成erupt代码段eruptweb前端页面eruptproeruptworkflow基于erupt实现的工作流模块(开发中)eruptdataflow基于erupt实现的数据流模块(开发中)eruptbi通过sql加js混编实现动态报表,支持:多数据源、自定义函数、图表开发等(付费模块)eruptsiteErupt官方网站https:github。comeruptseruptsiteeruptwebangularErupt前端源码,暂不开放,如有自定义页面的需求,可使用erupttpl模块技术体系Technologysystem
  后端:Java8、ScriptEngine、Annotation、JDBC、Reflect、SpringBoot、JPA、Hibernate、Quartz、Gson、Lombok、POI。。。
  前端:JavaScript、H5、MVVM、Router、AngularCLI、Angular、NGZORRO、NGALAIN、G2Plot、RxJS、TypeScript、Less。。。
  源码获取方式:关注小编转发文章私信【666】免费获取
  重要的事情说三遍,转发转发转发,一定要记得点赞转发哦!!!
  循环依赖问题全景图
  什么是循环依赖问题?
  类与类之间的依赖关系形成了闭环,就会导致循环依赖问题的产生。
  比如下图中A类依赖了B类,B类依赖了C类,而最后C类又依赖了A类,这样就形成了循环依赖问题。
  演示代码:publicclassClassA{privateClassBclassB;publicClassBgetClassB(){returnclassB;}publicvoidsetClassB(ClassBclassB){this。classBclassB;}}publicclassClassB{privateClassAclassA;publicClassAgetClassA(){returnclassA;}publicvoidsetClassA(ClassAclassA){this。classAclassA;}}
  配置文件:?xmlversion1。0encodingUTF8?beansxmlnshttp:www。springframework。orgschemabeansxmlns:xsihttp:www。w3。org2001XMLSchemainstancexsi:schemaLocationhttp:www。springframework。orgschemabeanshttp:www。springframework。orgschemabeansspringbeans。xsdbeanidclassAclassioc。cd。ClassApropertynameclassBrefclassBpropertybeanbeanidclassBclassioc。cd。ClassBpropertynameclassArefclassApropertybeanbeans
  测试代码:Testpublicvoidtest()throwsException{创建IoC容器,并进行初始化Stringresourcespringspringioccirculardependency。ApplicationContextcontextnewClassPathXmlApplicationContext(resource);获取ClassA的实例(此时会发生循环依赖)ClassAclassA(ClassA)context。getBean(ClassA。class);}
  通过SpringIOC流程的源码分析循环依赖问题:
  以上案例有几种循环依赖问题?
  循环依赖问题在Spring中主要有三种情况:通过构造方法进行依赖注入时产生的循环依赖问题。通过setter方法进行依赖注入且是在多例(原型)模式下产生的循环依赖问题。通过setter方法进行依赖注入且是在单例模式下产生的循环依赖问题。
  注意:在Spring中,只有【第三种方式】的循环依赖问题被解决了,其他两种方式在遇到循环依赖问题时都会产生异常。
  其实也很好解释:第一种构造方法注入的情况下,在new对象的时候就会堵塞住了,其实也就是先有鸡还是先有蛋的历史难题。第二种setter方法多例的情况下,每一次getBean()时,都会产生一个新的Bean,如此反复下去就会有无穷无尽的Bean产生了,最终就会导致OOM问题的出现。如何解决循环依赖问题?
  那Spring到底是如何解决的setter方法依赖注入引起的循环依赖问题呢?请看下图(其实主要是通过两个缓存来解决的):
  Spring三大缓存介绍
  Spring中有三个缓存,用于存储单例的Bean实例,这三个缓存是彼此互斥的,不会针对同一个Bean的实例同时存储。
  推荐:Java进阶视频资源
  如果调用getBean,则需要从三个缓存中依次获取指定的Bean实例。读取顺序依次是一级缓存二级缓存三级缓存
  一级缓存:MapString,ObjectsingletonObjects
  第一级缓存的作用?用于存储单例模式下创建的Bean实例(已经创建完毕)。该缓存是对外使用的,指的就是使用Spring框架的程序员。
  存储什么数据?K:bean的名称V:bean的实例对象(有代理对象则指的是代理对象,已经创建完毕)第二级缓存:MapString,ObjectearlySingletonObjects
  第二级缓存的作用?用于存储单例模式下创建的Bean实例(该Bean被提前暴露的引用,该Bean还在创建中)。该缓存是对内使用的,指的就是Spring框架内部逻辑使用该缓存。为了解决第一个classA引用最终如何替换为代理对象的问题(如果有代理对象)请爬楼参考演示案例
  存储什么数据?K:bean的名称V:bean的实例对象(有代理对象则指的是代理对象,该Bean还在创建中)第三级缓存:MapString,ObjectF?singletonFactories
  第三级缓存的作用?通过ObjectFactory对象来存储单例模式下提前暴露的Bean实例的引用(正在创建中)。该缓存是对内使用的,指的就是Spring框架内部逻辑使用该缓存。此缓存是解决循环依赖最大的功臣
  存储什么数据?K:bean的名称V:ObjectFactory,该对象持有提前暴露的bean的引用
  为什么第三级缓存要使用ObjectFactory?需要提前产生代理对象。
  什么时候将Bean的引用提前暴露给第三级缓存的ObjectFactory持有?时机就是在第一步实例化之后,第二步依赖注入之前,完成此操作。
  总结
  以上就是Spring解决循环依赖的关键点!总结来说,就是要搞清楚以下几点:搞清楚Spring三级缓存的作用?搞清楚第三级缓存中ObjectFactory的作用?搞清楚为什么需要第二级缓存?搞清楚什么时候使用三级缓存(添加和查询操作)?搞清楚什么时候使用二级缓存(添加和查询操作)?当目标对象产生代理对象时,Spring容器中(第一级缓存)到底存储的是谁?
投诉 评论 转载

杀手2中文版杀手2中文版是由IOInteractiveAS制作发行的PC平台动作射击类游戏,本作正式标志着《杀手》脱离SE后的系列正式归来,秉承着系列固有的风格以及玩法,玩家们将会在各种情……七一文学旅行就是找回丢失的快乐李立峰专栏那些遇见的人,走过的路,停留的车站,看见的彩虹转眼之间都成了美好的记忆。当我们老了,睡意昏沉,炉火旁打盹,我仍然会认为:我在世上行走,记忆是唯一的行囊。看完《风走八千里,……梅婷也是时尚界的大佬!穿黑色风衣配棒球帽走机场,简约但很高级梅婷的演艺经历可太丰富了!出演过《父母爱情》、《推拿》等多部优秀剧集,拿了很多颇具权威性的奖项,演艺道路还算一帆风顺,她不只是表演届的大佬,她也是时尚界的大佬,在某次机场出行时……SpringBoot快速开发企业级Admin管理后台介IntroErupt是一个低代码全栈类框架,它使用Java注解动态生成页面以及增、删、改、查、权限控制等后台功能。零前端代码、零CURD、自动建表,仅需一个类文件……哈登和杜兰特的老大之争前一阵子,NBA篮网队在哈登单核带队的情况下三军用命个个争先,打得有声有色风生水起。可是杜兰特甫一复出,就以102:110败给76人。为何11反而小于2甚至小于1了呢?这要从哈……0胜3负!最强00后迎战生涯二号克星!颜丙涛誓要复仇霍金斯冲北京时间2月10日。2022斯诺克球员锦标赛来到了14决赛的比赛争夺。在首场比赛中,里奇沃顿在25落后的情况下连赢4局以65大逆转马克威廉姆斯,率先杀进4强。而他的对手就是颜丙……绿林侠盗亡命之徒与传奇第二赛季圣诞节带来了全新的大淘金模式以SumoDigital和FocusEntertainment今日发布了多人盗宝游戏《绿林侠盗:亡命之徒与传奇》的第二赛季:圣诞节。新赛季带来了充满装饰品的战斗通行证以及令人兴奋……为什么孩子不能让老人带,这就是最好的答案一个五六岁的孩子正在沙发上蹦蹦跳跳,玩的不亦乐乎,突然食物卡在喉咙里,出不来下不去,他想喊救命,但是发不出声音,于是他更加剧烈的跳动,试图挽救自己。这时候他的奶奶,一个六……30号碎片商店更新第一天,水晶猎龙者兑换量突破百万王者荣耀这款游戏中有很多大佬玩家都比较喜欢在碎片商店里面兑换皮肤,30号碎片商店进行了史诗级别的更新,这次主要是加入了花木兰的水晶猎龙者,这款史诗皮肤之前据说加入过,但是官方公……很遗憾!我们再也看不到从电话亭里走出来扮演超人的霍华德了2008年在新奥尔良举办的全明星扣篮大赛上,聚光灯都汇集在了一个从电话亭里变装出来的男人身上,而身穿超人服装的他最终也如愿获得了那一年扣篮大赛的冠军,而他就是今天我们要聊到的故……艺术体操界的5朵金花,又一位纯欲天花板诞生,她叫韦筱圆体操界的纯欲天花板在所有的奥运项目中,艺术体操是美女出圈频率最高的项目,其次是花样滑冰、跳水等项目,因为这些项目不仅要求运动员的柔韧性、韵律、协调性、爆发力,更重要的是观……联盟第一!勇士晋级,科尔终于开窍,库里创四大神迹喜讯不断北京时间4月28日,NBA季后赛继续进行,金州勇士坐镇主场迎战丹佛掘金。值得一提的是金州勇士这边的变阵,首发直接就用五小,库里,普尔,汤普森,威金斯,格林的阵容,这套阵容……
患病造句用患病造句大全草原上的小木屋读后感什么时候生孩子比较好早生或晚生都有影响非常感谢造句用非常感谢造句大全阿里云之父王坚,靠的是运气还是实力?真面目被揭开关于初中音乐课堂教学反思及对策50岁后,有钱没钱,建议多吃4种高叶酸菜,增强抵抗活力充沛180万经营贷变房贷,银行告了!法院赶紧还钱,否则拍卖房子新交互时代自然用户界面中的自然到底是什么意思南通崇川区大圣杯乒乓球团体邀请赛落幕乡村晚景重又造句用重又造句大全
以和谐为话题的作文8篇MOTODROIDRAZR电池怎么样松锦之战的战略意义明军彻底失去了关外的控制5分钟讲完一部电影:如何通过影视解说号赚钱?热文聚热点网 如何去应对产前焦虑入伏后,汗多就该补紫菜?医生:夏天小心低血钾,别只知道吃香蕉 环球影城的一周年和迪士尼的100年昨夜我又哭了小学生关于有趣的发现作文600字何需任性走一回孩子支气管炎咳嗽怎么办怎样选吉他护板吉他护板如何挑选

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找江西南阳嘉兴昆明铜陵滨州广东西昌常德梅州兰州阳江运城金华广西萍乡大理重庆诸暨泉州安庆南充武汉辽宁