为什么需要自动生成代码?
作为一个软件公司,开发团队非常重要,作为一个开发团队,人员配备、开发效率等都非常重要,但是开发效率包含很多,如:代码质量(扩展性、重构性等),但是这些都是建立在规范的代码之上来进行,在一个团队中,每个开发者都有自己的习惯方式来进行代码的编写,例如(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,如果想要进行全新开发一个项目,又想快速的初始化项目,那么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框架,来进行更多框架的代码自动生成.
分享到:
相关推荐
SSH2(Struts2、Spring2.5、Hibernate3.3)是一个经典的Java Web开发框架组合,用于构建高效、可维护的企业级应用。这个自动代码生成器程序是基于SSH2框架设计的,它能帮助开发者快速生成项目的基础代码,提高开发...
Struts1、Spring2.5和Hibernate3.0是Java Web开发中经典的SSH(Spring、Struts、Hibernate)集成框架的三个组件,它们在2000年代末期至2010年代初广泛应用于企业级应用开发。SSH框架组合为开发者提供了模型-视图-...
Struts2、Spring2.5和Hibernate3.2是经典的Java Web开发框架组合,被称为SSH(Struts2、Spring、Hibernate)集成。这个整合包可能是为了帮助开发者快速搭建基于这些技术的项目环境。 Struts2是MVC(Model-View-...
Struts2-Spring2.5-Hibernate3.3是一个经典的Java Web开发框架组合,被誉为SSH2,这三者分别是用于MVC(Model-View-Controller)架构的Struts2、用于依赖注入和管理Bean的Spring以及用于持久层操作的Hibernate。...
### MyEclipse开发SSH2(Struts2+Spring+Hibernate)教程精析 #### 一、开发环境准备 在深入探讨如何使用MyEclipse构建SSH2框架(Struts2 + Spring + Hibernate)之前,首要任务是确保开发环境的正确搭建。本教程...
Struts2、Hibernate3.3和Spring2.5是Java Web开发中三个非常重要的框架,它们的整合在企业级应用中十分常见。Struts2作为MVC(模型-视图-控制器)架构的实现,主要负责处理用户请求并展现响应;Hibernate3.3是一个...
Struts2、Spring2.5和Hibernate3.2是经典的Java Web开发框架组合,它们各自在应用程序的不同层面提供了强大的功能。下面将详细解释这三个框架以及它们如何协同工作。 **Struts2** Struts2是一个基于MVC(Model-View...
Struts2.0、Spring2.5和Hibernate3.2是经典的Java企业级开发框架组合,通常被称为SSH(Struts2、Spring、Hibernate)集成框架。这个组合在2000年代末到2010年代初广泛应用于构建大型、复杂的企业级Web应用。SSH框架...
这个"Spring2.5+Hibernate3.3+Struts2整合开发案例"提供了详细的示例,帮助开发者了解如何将这三个框架协同工作,提升应用程序的开发效率和可维护性。 Spring框架作为核心的依赖注入(DI)和面向切面编程(AOP)...
Struts2、Spring3 和 Hibernate3 是经典的 Java Web 开发框架组合,通常称为 SSH(Struts2、Spring、Hibernate)框架。这个“Struts2 0+Spring3+Hibernate3 SSH Demo”是一个示例项目,旨在展示如何整合这三个框架来...
Struts1.2、Hibernate3.2、Spring2.5 和 DWR2.0 是一组经典的Java企业级开发框架组合,它们在Web应用程序开发中扮演着重要的角色。这些框架的集成为开发人员提供了强大的功能,使得后端数据管理、业务逻辑处理以及...
Struts2、Hibernate3.3和Spring3.0是Java Web开发中著名的三大框架,它们分别负责MVC模式中的Action层、持久化层和依赖注入与业务逻辑管理。本实例将详细阐述如何将这三个框架整合在一起,实现一个完整的CRUD(创建...
Struts2、Spring 2.5 和 Hibernate3.1 是经典的Java Web开发三大框架,合称为SSH或S2SH框架。这些技术的结合为开发者提供了强大的模型-视图-控制器(MVC)架构,用于构建高效、可维护的Web应用程序。 **Struts2** ...
Struts2.0、Spring2.5和Hibernate3.2是经典的Java企业级开发框架组合,被称为SSH架构。这个架构组合在2000年代末到2010年初非常流行,为大型企业级应用提供了强大的模型-视图-控制器(MVC)支持、依赖注入(DI)以及...
Struts、Hibernate和Spring是Java开发中的三大框架,它们各自负责不同的职责,组合起来可以构建出高效、松耦合的企业级应用。这个"Struts + Hibernate + Spring demo"是一个示例项目,展示了这三个框架如何协同工作...
SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。这个实例是为初学者设计的,通过MyEclipse集成开发环境,详细介绍了如何将这三大框架整合到一个登录工程中。下面将详细...
Struts2.1.8+Spring2.5.6+Hibernate3.3.2是经典的Java Web开发框架组合,常被称为SSH。这三个框架协同工作,为开发者提供了强大的模型-视图-控制器(MVC)架构支持,使得企业级应用的开发更加高效和模块化。 Struts...
Struts2.0、Spring2.5和Hibernate3是经典的Java Web开发框架组合,它们各自在应用程序的不同层面提供了强大的功能支持。这篇概述将详细介绍这三个框架的核心特性及其在项目中的作用。 **Struts2.0** 是一个基于MVC...