【发布时间】:2011-10-31 01:29:22
【问题描述】:
我有一个基于 Java EE 的 REST api 应用程序。它具有如下分层架构:
- 资源(Jax-rs 资源)
- 对象验证
- 对象映射器
- 服务层
- 存储库层
- JPA 实体
一切都使用 Spring 依赖注入进行连接。
我需要以允许其他外部开发人员编写扩展/插件并覆盖或扩展核心中任何次要或主要功能的方式设计此核心应用程序。如果有帮助的话,可以把它想象成 Java EE 中的 Wordpress CMS。您将如何围绕当前架构设计插件系统?
我能想到的一个明显方法是覆盖或添加新功能到适当的资源(使用验证、objectmapper)、服务、存储库和实体,并从中创建一个 jar + xml。但我想确保插件开发人员必须编写绝对最少的代码才能使新功能正常工作,同时重用核心代码。
假设,您想创建一个 wordpress 博客文章扩展程序,让您创建博客文章,其中包含一些核心中尚不存在的额外字段。设计当前 Java EE 应用程序的最简单和最干净的方法是什么,这样对插件/扩展开发人员来说很容易?任何可能有用的模式,如策略或模板方法模式?
是否有任何开源 Java CMS 遵循使用 Spring/JPA 和标准技术的模型?
【问题讨论】:
-
听起来你正在尝试重塑Play!,朋友。
标签: java jakarta-ee inheritance design-patterns plugin-architecture