gpt4 book ai didi

java - 我应该如何在分层的 Java EE 应用程序中设计插件系统?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:15:48 29 4
gpt4 key购买 nike

我有一个基于 Java EE 的 REST API 应用程序。它具有如下所示的分层架构:

  1. 资源(Jax-rs 资源)
    • 对象验证
    • 对象映射器
  2. 服务层
  3. 存储库层
  4. JPA 实体

一切都使用 Spring 依赖注入(inject)进行连接。

我需要以允许其他外部开发人员编写扩展/插件并覆盖或扩展核心中任何次要或主要功能的方式设计此核心应用程序。如果有帮助的话,可以把它想象成 Java EE 中的 Wordpress CMS。您将如何围绕当前架构设计插件系统?

我能想到的一种显而易见的方法是覆盖或向适当的资源(使用验证、objectmapper)、服务、存储库和实体添加新功能,并从中创建一个 jar + xml。但我想确保插件开发人员必须编写绝对最少数量的代码才能使新功能正常工作,同时重用大量核心代码。

假设,您想要创建一个 wordpress 博客文章扩展,让您创建的博客文章包含一些核心中尚不存在的额外字段。什么是设计当前 Java EE 应用程序的最简单和最干净的方法,以便插件/扩展开发人员轻松使用?任何可能有用的模式,如策略或模板方法模式?

是否有任何开源 Java CMS 遵循使用 Spring/JPA 和标准技术的模型?

最佳答案

我认为您的意思是扩展功能,而不是覆盖核心。典型的架构示例定义了可以覆盖的关注点(与核心分开)并做出规定。 Eclipse 框架使用插件扩展和扩展点机制的组合来实现这一点。这是进一步使用 OSGI 捆绑。

另一种方法是将应用程序分解为更小的独立模块/服务。您需要做的就是通过 ESB/应用程序集成器(如 Mule/Spring Integration)托管这些模块,并允许用户配置他们的路由/转换版本。扩展意味着创建新的转换器,将其添加到消息流中。

关于java - 我应该如何在分层的 Java EE 应用程序中设计插件系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7129442/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com