- 浏览: 356930 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
missfmaster:
这框架好特么底层。
Terracotta设计原理分析--(部分内容来自官方描述) -
小黄牛:
很好不错!分享一个在电商购物支付流程中,在各大参与者系统中可能 ...
分布式事务设计-两段式提交 -
zhglhy:
学习了,感谢分享
JAVA垃圾回收分析 -
talentluke:
如果在事务一中出现故障,数据库是可以回滚但消息队列不能回滚,队 ...
用消息队列和消息应用状态表来消除分布式事务(转载) -
langmanxingkong123:
谁说jedis不能存集合类的数据。乱说。。。
redis jredis jedis 使用
为什么需要自动生成代码?
作为一个软件公司,开发团队非常重要,作为一个开发团队,人员配备、开发效率等都非常重要,但是开发效率包含很多,如:代码质量(扩展性、重构性等),但是这些都是建立在规范的代码之上来进行,在一个团队中,每个开发者都有自己的习惯方式来进行代码的编写,例如(ssh文件名举例):
dao接口: 写法一:IXXXDao, 写法二:IXXXDAO 等等
dao实现类: 写法一:XXXHibernateDAO,写法二:XXXHibernateDao,写法三:XXXDAO等等
service接口:写法一:IXXXService,写法二:IXXXManager等等
service实现: 写法一:XXXServiceImpl,写法二:XXXService,写法三:XXXManagerImpl等等
action: 写法一:XXXAction XXXManager等等
还有配置文件的一些注入,以及命名,会有很多种,可能这时会有很多人认为只要function体里面的代码逻辑质量高,很规范的运用了面向对象的思想,对逻辑封装的好,性能高,这些规范不规范的有什么问题,影响不了程序的性能,如果你是这样想的,那么我会对你说,你成不了气候,永远都是一个边缘的开发者, 打个比方:一个公司如果没有良好的规章制度,你觉得这个公司好吗? 同样的道理,一个好的项目,没有自己的一套编码规范,是个好的项目吗?
就算在项目开发前定制了规范,也有开发人员因为自己的习惯忘记了定制的规范,按照自己的风格来进行代码编写,这样久而久之,一个项目中各种风格的代码都有,对于ssh架构的开发人员每天都会遇到重复的代码编写(当然对重复的代码有可能你会ctrl+c,ctrl+,就算是ctrl+c,ctrl+v也需要花大量的时间做些无意义的代码编写,这样降低了开发效率,同时好多开发人员对ssh也产生了抵触,认为自己一天到晚都在写些没有用的代码,自己感到很沮丧!
本程序的来源
jsmart
在网上search了这样的插件,以及相关的源码,对jsmart映象比较深,试用该插件后发现功能虽然强大(能够生成各种框架的环境搭建,以及fck等编辑器的初始化),但是发现有很多的规则受限制:
1.每次自动生成的代码都是一次性全部初始化生成,对于二次开发的人员来讲,需要对自己想要指定的单表(数据库表)进行生成(bean,hbm.xml,dao.service,action)时,该插件无法做到,我想了一下,作者应该会考虑到这一点吧,因此询问该作者后,他说要购买企业版,能够达到该功能
2.定制了自己的数据库规范, 该插件对数据库表进行了限制,如:数据库表名不能带有_(下划线),字段名也不能带有,这点我是最受不了的,不想多说了,从这点,我也就没有继续往下试了.
经过再三的筛选,最后选择了一个开源的框架rapid-framework,如果想要进行全新开发一个项目,又想快速的初始化项目,那么rapid-framework
因为本人仅限于生成自己定制的模版文件,然后自动生成,并非想自动生成整个项目,所以对该项目的部分代码进行了解读,并对需要使用的类提取到自己的项目中,然后对自己需要的定制作了相应的修改,完成了一个自动生成的程序.
生成代码后的目录结构如下:
com.bestsoft.ssh目录下的
bean/{自定义的存放包}目录: bean文件、hbm.xml文件
dao/{自定义的存放包}目录:接口类
dao/hibernate/{自定义的存放包}目录:实现类
service/{自定义的存放包}目录:接口类
service/impl/{自定义的存放包}目录:实现类
action/{自定义的存放包}目录:struts2的类
conf目录下的
{自定义的存放包}目录:4个xml文件(applicationContext-dao.xml(dao注入配置),applicationContext-service.xml(service注入配置),action-servlet.xml(action注入配置),struts-{自定义的存放包名}.xml(struts2的action配置文件))
以上是根据我自己项目目录以及代码需要自动生成哪些内容而自己定制的,包括类中的方法等自己都可以定制.
实现技巧:
generator\template\src\conf\${subpackage}下的文件实现:
generator\template\src\conf\${subpackage}\目录下有8个xml文件,4个配置文件中是带有xml文件头信息的,4个配置文件不带头文件信息,也就是说这4个文件是标准的配置文件,还有4个是非标准的(文件名中带有-insert的)。
配置文件的作用:
标准的配置文件是在第一次生成代码的时候调用,来生成一个完整的配置文件的内容,如果说想在此配置文件的内容中增加内容,怎么办?
大家可以看到,标准的4个配置文件中都带有“<!-- webapp-generator-insert-location -->”这样的注释,该注释的主要作用是用来在该配置文件原有内容的基础上增加新的内容,但是这个新增加的内容从哪里来? 这些内容就是从带"-insert"的配置文件中来,把带"-insert"的配置文件内容加入到不带“insert”的配置文件中去。
generator\template\src\${basepackage_dir}目录下的文件实现:
generator\template\src\${basepackage_dir}\bean 该目录下文件定制bean,以及or/map文件的模板
generator\template\src\${basepackage_dir}\dao 该目录下文件定制dao文件的模板
generator\template\src\${basepackage_dir}\service 该目录下文件定制service文件的模板
generator\template\src\${basepackage_dir}\web\action\${subpackage} 该目录下文件定制action文件的模板。
上述文件模板中的内容可以根据自己的需求来作相应功能的增加,修改等
generator\src目录下的文件实现:
generator.properties文件:配置信息,大家可以看到我们的目录或者模板文件中含有${}的符号,这些${}的内容就是在这里进行配置的.
GeneratorMain.java(该类用来传入一个参数:"表名(数据库表)",然后就会生成想要生成的模版),Generator.java(该类实现想要定制哪些模版文件来进行生成,生成后的文件存放在哪里),generator.properties(配置自己的数据库信息,存放包的信息等),template目下的所有文件(该目录下存放的是模版文件,用来只自定义自己想要生成类,xml文件的模版内容)。
红色部分中的类可能是你要进行修改的类,其他包的类大家一看就知道是做什么用的.
附件是该程序的代码,该程序只是一个demo,提供了解决该问题的方法,每个项目定制自动生成代码的内容都不一样,但是只需要在该demo的基础上做相应的修改,就可以实现自己想要的内容, 如果还有不清楚的地方,可以留言给我,我会针对留言来进行回复,因为该demo只对ssh2做了程序自动生成,如果该demo无法满足你更多的需要,可以在网上搜索rapid-framework框架,来进行更多框架的代码自动生成.
- generator.rar (80.5 KB)
- 下载次数: 1743
- jar.rar (1.5 MB)
- 下载次数: 2446
评论
1732947086@qq.com
谢谢......
而且每一个Entity必须要有一个IDAO?必须要有一个DAO?必须要有一个IService?必须要有一个Service?
这种设计是如此的丑陋,但是居然还有无数人很喜欢喝尊崇这样丑陋的设计
可以查看下rapid-framework,生成的代码将是即其精简。避免如你所述问题。
http://code.google.com/p/rapid-framework/downloads/list
而且每一个Entity必须要有一个IDAO?必须要有一个DAO?必须要有一个IService?必须要有一个Service?
这种设计是如此的丑陋,但是居然还有无数人很喜欢喝尊崇这样丑陋的设计
好的,借鉴下,谢谢!!
下载了,有时间研究下
约定是比较有效的。。看rails的coc就知道了
自动生成代码--对这样的标题不感冒。。
发表评论
-
王者荣耀是用什么语言开发的!
2020-10-29 19:24 11442017年什么最火? 不用问,肯定是人人都“ ... -
王者荣耀是用什么语言开发的!
2020-10-29 19:04 02017年什么最火? 不用问,肯定是人人都在撸的“王 ... -
用消息队列和消息应用状态表来消除分布式事务(转载)
2012-11-21 11:12 3293由于数据量的巨大,大 ... -
CA认证原理以及实现(下)
2012-09-10 20:38 16968在上述的文章后了解到原理之后,我们这篇文章来进行CA的搭建。 ... -
CA认证原理以及实现(上)
2012-09-10 20:00 49305原理基础数字证书为发 ... -
企业追逐的--网络热点(云、海量数据、虚拟化)(下)
2012-06-28 21:58 1451云管理平台云是IT实现,是造出来的,不是买来的。我们可以买服务 ... -
企业追逐的--网络热点(云、海量数据、虚拟化)(上)
2012-06-28 21:08 1614云之所以热,是因为现在以及未来市场的业务推动力(回报率),现在 ... -
Terracotta Server[兵马俑]集群
2012-06-14 01:23 10743Terracotta的介绍以及原理在我之前的文章中已经做了相关 ... -
Local Cache + Server Cache
2012-05-27 00:01 785其实下面说的一些设计思路来源于一些开源的缓存软件,比如Ehca ... -
Web请求-异步模式
2012-05-26 22:45 268Comet技术已经不算是 ... -
分布式事务设计-三段式提交
2012-05-25 20:24 5486前面的文章提到的两段 ... -
分布式事务设计-两段式提交
2012-02-08 17:16 14110事务是一个很重要的概念,它必须满足ACID特性,在单机的数据库 ... -
架构设计要“注意点”
2011-09-08 14:24 370资源有限注意点:系统设计的时候总是估摸不到会有大数据量从远端传 ... -
替代分布式事务策略
2011-06-10 19:59 2213由于数据量的巨大,现 ... -
你符合成为一个架构设计师的特征吗?
2011-03-30 12:28 557其实想写这篇文章也是 ... -
缓存客户端集群
2011-03-18 17:12 1627Memcached Cache是集中式Cach ... -
Netlog中数据库演变过程
2011-03-18 15:45 476Netlog拥有4000万活跃用户,每个月有超过5000万的独 ... -
如何检测一台机器是否宕机?(转载)
2011-03-15 20:19 1735检测一台机器是否宕机 ... -
淘宝OceanBase设计(转载)
2011-03-14 16:26 1339OceanBase有什么特点 ... -
EhCache辅助spring Acegi
2010-09-14 16:36 2102因为在项目中想通过缓存来acegi的整合,因此选用了Ehcac ...
相关推荐
为什么需要自动生成代码? 作为一个软件公司,开发团队非常重要,作为一个开发...因为该demo只对ssh2做了程序自动生成,如果该demo无法满足你更多的需要,可以在网上搜索rapid-framework框架,来进行更多框架的代码自动生成.
cdst ssh代码生成器,免费的,功能强悍的struts2+spring2.5+hibernate3.2的一套 代码生成系统。.zip cdst ssh代码生成器,免费的,功能强悍的struts2+spring2.5+hibernate3.2的一套 代码生成系统。.zip cdst ssh代码...
cdst ssh代码生成器,是有我爱神州大地网站开发的一套以web平台的,免费的,功能强悍的struts2+spring2.5+hibernate3.2的一套 代码生成系统。
Servlet全称“Java Servlet”,中文意思为小服务程序或服务连接器,是运行在Web服务器或应用服务器上的程序,它是作为来自Web浏览器或其他HTTP客户端的请求和HTTP服务器上的数据库或应用程序之间的中间层。...
2、把工程中的“演示数据脚本.sql”导入到查询分析器生成数据,注意:首先需要创建一个bbs数据库 3、使用脚本添加一些测试数据 4、把工程布置到Tomcat中 5、启动Tomcat之后,打开浏览器在地址栏输入:...
用于JAVA开发中的 Struts2.0 + Spring2.0 + Hibernate3.2 框架整合程序开发】 强大的支撑功能,堪称JAVA SSH编程的利器,你绝对值得拥有! 自动生成以下所有内容(即:完整的Java SSH支持的工程) Sturts2.0配置--> ...
AutoCode代码生成器(SSH版) 【用于JAVA开发中的 Struts2.0 + Spring2.0 + Hibernate3.2 框架整合程序开发】 强大的支撑功能,堪称JAVA SSH编程的利器,你绝对值得拥有! 自动生成以下所有内容(即:完整的Java SSH支持...
让你不再为配置SSH烦恼,很方便、快捷地生成SSH组合代码。可以提高工作效率。 目前版本支持Strtus+hibernate+spring+mysql 支持oracle与sqlserver的版本正在开发之中。 欢迎相互交流
与其他框架相比,它提供了各种Web系统开发过程中都需要开发的一些功能,如登陆、用户密码加密,用户管理、根据不同的用户可以展现不同的菜单,同时还带有代码生成器,自动生成40%-60%左右的代码,自带了默认的一些...
AutoCode代码生成器(SSH版) 【用于JAVA开发中的 Struts2.0 + Spring2.0 + Hibernate3.2 框架整合程序开发】 强大的支撑功能,堪称JAVA SSH编程的利器,你绝对值得拥有! 自动生成以下所有内容(即:完整的Java SSH...
全自动生成Struts2 Hibernate3.6 Spring2.5 自动生成DAO,Service,Action,以及配置文件; 运行CreateSrc.java文件, 修改main()中的方法, 自定义要生成对象的名称; 运行后,请刷新工程可看到生成的文件
十方SSH是一种完全完全免费的开源框架,基于LayUI + Struts2 + Spring + Hibernate + Mysql构造而成,该框架具有一个完整的权限管理系统,代码简洁,方便进行二次开发。 后台登录页 后台首页 代码生成器
EasyEE开源JavaEE企业级快速开发平台 EasyEE是一个开源JaveEE企业级快速开发基础平台,提供多种技术...提供代码生成器。 EasyEE是开源的JaveEE企业级快速发展的基本平台,提供了多种技术选择选项,支持Spring Boot,Hi
Struts1.2+spring3.0+hibernate 一个很好用的东西,其实主要用他生成的po和spring以及struts.xml文件就ok了.
struts 2,hibernate 3,spring 2. 的学习示例,包括框架,同时附送网上找到的java代码生成器 资源都是网上收集的。版权归作者所有
JSP文件--> 具有Struts2.0支持的增、删、改、查页面及自定义查询、自动分页等操作 Action--> 业务Action.java和导出Excel的Action等 VO --> bean.java及 bean.hbm.xml配置文件 Service --> Service接口定义类 ...
只要在mysql数据库中创建 scs 数据库,然后在发布项目可以在tomcat中发布,hibernate 自动生成表。操作时要先进入后台建立社团,才能进行前台操作。 项目中不含jar包,太大31.8M,有需要jar包的可以联系我.QQ :...