Java 当两个不同的wicket应用程序共享相同的功能时,如何重用代码
我有一个Wicket AuthenticatedWebApplication,它有几个页面和功能,需要在我必须开发的新AuthenticatedWebApplication中重用 我正在使用Wicket 1.4,Spring和Hibernate 这两个应用程序甚至将共享相同的外观(应用程序徽标除外),该外观现在在一个基本页面中实现 有没有人有过类似的经历?我绝对不想重复复制粘贴代码,因为通用功能实现了一个工作流过程,这个过程可以而且将会改变Java 当两个不同的wicket应用程序共享相同的功能时,如何重用代码,java,wicket,code-reuse,Java,Wicket,Code Reuse,我有一个Wicket AuthenticatedWebApplication,它有几个页面和功能,需要在我必须开发的新AuthenticatedWebApplication中重用 我正在使用Wicket 1.4,Spring和Hibernate 这两个应用程序甚至将共享相同的外观(应用程序徽标除外),该外观现在在一个基本页面中实现 有没有人有过类似的经历?我绝对不想重复复制粘贴代码,因为通用功能实现了一个工作流过程,这个过程可以而且将会改变 如何保持我的应用程序模块化并实现我的目标?这是基于组件
如何保持我的应用程序模块化并实现我的目标?这是基于组件的框架的要点。
将公共代码(组件、行为、基类,如会话、应用程序等)放在单独的java项目(.jar)中。以后将依赖于特定的.war项目中的该项目(将.jar放在WEB-INF/lib中)。瞧 从你的问题来看,我想你主要关心的是页面。那么我的建议是: 首先,您应该指定页面的哪些部分可以从一个应用程序更改为另一个应用程序。然后你必须拿出这些零件的数据来获得模板。现在,您应该(根据您的需求)决定如何存储数据(例如,在xml文件、数据库中)。
现在,您可以根据需要在线或离线从模板编译页面。我的公司一直都在这样做。我们有一个核心包,其中包含基本用户应用程序、用户帐户、登录、身份验证等。然后,我们开发的每个项目都扩展了这个基本包。存在一些重复—例如,几乎所有配置文件在每个配置文件中看起来都相同—但每个配置文件都有自己的
主题
目录,该目录提供标记,并根据应用程序的外观进行定制
执行此操作时,请给出一些建议:
getXPanel()
方法,每个子应用程序都会覆盖这些方法。例如,getHeaderPanel()
功能。也是放置jQuery导入的好地方,ecfoundations应用程序扩展了科学应用程序
InquiryApplication扩展了ScienceApplication
我们的两个科学应用程序有不同的标题,甚至有几个不同的页面,但是
ScienceApplication
对我上面描述的方法有不同的理解。从您的其他评论和答案判断:
这同样适用于数据库或表。。。例如,使用JPA,您可以将所有全局使用的实体推送到您的基础上,并使用不同的表名实现两个不同的用户实体。您甚至可以使用共享的抽象baseUser实体来减少代码重复。我如何使用不同的徽标共享基本页面?例如,我如何拥有两个不同的登录并仍然使用基于角色的权限?应用程序徽标是必须更改的全部内容,还是您只想重用应用程序功能的一个子集?如果是后者,这个子集有多大(粗略估计50%/10%/75%就足够了)。如果是前者,你想共享同一个应用程序实例吗?@Nicktar子集可能占应用程序功能的80%左右。徽标和菜单肯定会在两个应用程序之间发生变化。身份验证应该是相同的,除了共享功能之外,每个应用程序都有一些自己独有的功能。然后,我在下面的回答中概述的解决方案应该可以工作。只需将共享功能编译成project/jar,并在需要的地方扩展/覆盖新项目中的类。关于第一个列表中的(2)+(3),您是否将页面标记与代码分开组织?@ireddick Yup;我们为标记、图像、css等使用一个单独的“主题”文件夹。我们将后端和前端工作分开,因此这也很有帮助。