JavaEEベースのRESTAPIアプリケーションがあります。次のような階層化アーキテクチャがあります。
- リソース(Jax-rsリソース)
- オブジェクトの検証
- オブジェクトマッパー
- サービスレイヤー
- リポジトリレイヤー
- JPAエンティティ
すべてがSpring依存性注入を使用して配線されています。
このコアアプリケーションは、他の外部開発者が拡張機能/プラグインを記述し、コアのマイナーまたはメジャー機能をオーバーライドまたは拡張できるように設計する必要があります。それが役立つのであれば、JavaEEのWordpressCMSのように考えてください。現在のアーキテクチャを中心にプラグインシステムをどのように設計しますか?
私が考えることができる明白な方法の1つは、適切なリソース(検証、objectmapperを使用)、サービス、リポジトリ、およびエンティティに新しい機能をオーバーライドまたは追加し、そこからjar+xmlを作成することです。ただし、プラグイン開発者は、コアコードのマッシュを再利用しながら、新しい機能を機能させるために最小限のコードを記述しなければならないことを確認したいと思います。
コアにまだ存在しないいくつかの追加フィールドを使用してブログ投稿を作成できるワードプレスのブログ投稿拡張機能を作成するとします。プラグイン/拡張機能の開発者にとって簡単な、現在のJava EEアプリの設計を行うための最も簡単でクリーンな方法は何でしょうか?戦略やテンプレートメソッドパターンのように役立つパターンはありますか?
Spring / JPAと標準テクノロジーを使用したモデルに従うオープンソースのJavaCMSはありますか?