代码之家  ›  专栏  ›  技术社区  ›  Neil

接缝设计问题

  •  2
  • Neil  · 技术社区  · 14 年前

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

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

    我可以只修改项目而不回头看,但我将失去能够重新生成项目以添加新表和行为的巨大优势。虽然我可以用我的更改生成一个新项目并手动应用这些更改,但我不希望每次需要进行更改时都这样做。

    不幸的是,生成这个项目的工具是不能被触摸的(因为它不是我们的工具,而是一个第三方软件公司的工具,生产项目模板)。

    我注意到它大量使用Seam框架来实例化生成的类(使用 @In(create = true) ). 不管怎样,都要扩展生成的类,使得再生现有类不会覆盖我的更改,但是这些扩展类会被实例化吗?

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

    1 回复  |  直到 14 年前
        1
  •  1
  •   gorlok    13 年前

    在我看来,这听起来也像seam gen。这可以帮助您: 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
    

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