Seam的设计问题

时间:2010-11-25 11:02:13

标签: java code-generation seam

我有一个聪明的程序,它给出了一个包含数据库特定元数据的文件,在eclipse中为我生成了整个项目。它使用hibernate访问数据库并提供基本的crud功能以及提供xhtml接口。

一切都很好,只要需要简单的操作,几乎任何事情都可以完成。但是,我当然希望迟早我需要修改这个项目来实现一些自定义的行为。

我可以修改项目并且永远不会回头,但是我将失去能够重新生成项目以添加新表和行为的巨大优势。虽然我可以使用我的更改生成一个新项目并手动应用这些更改,但我不需要为我需要进行的每个更改执行此操作。

不幸的是,无法触及生成此项目的工具(原因是它不是我们的工具,而是生成项目模板的第三方软件公司的工具)。

我注意到它大量使用Seam框架来实例化生成的类(使用@In(create = true))。反正有没有扩展生成的类,以便重新生成现有的类不会覆盖我的更改,而是实例化这些扩展类?

我是否可以使用一些策略来最小化对生成的类的修改(理想情况是仅通过向项目添加文件来修改行为,但我意识到xhtml文件是不可能的)?任何帮助将不胜感激,但我意识到在可能之前必须对该工具进行一些更改(例如工厂?)。

1 个答案:

答案 0 :(得分:1)

这听起来像缝线一样。这可以帮助您:http://seamframework.org/Community/ModifyingSeamgen

我不喜欢seam-gen。这是一个有价格的快捷工具。请参阅此帖子http://shervinasgari.blogspot.com/2010/10/why-you-should-not-use-seam-application.html

我爱Seam,但我不喜欢/喜欢seam-gen。 seam-gen不适合现实世界的应用程序。

除此之外:

@In(create=true) BeanClass beanName

从一些上下文中注入名为“beanName”的bean并键入BeanClass。如果该bean尚不存在,那么它将被创建(因为create = true)。如果它存在于某个上下文(页面,请求,会话,应用程序,工作流等),它将被找到它,它将被注入属性beanName。