У меня есть приложение REST API на основе Java EE.Он имеет многоуровневую архитектуру, подобную следующей:
- Ресурсы (ресурсы Jax-rs)
- Проверка объекта
- Отображение объектов
- Сервисный уровень
- Уровень репозитория
- Объекты JPA
Все подключено с помощью внедрения зависимости Spring.
Мне нужно спроектировать это ядроприложение таким образом, что оно позволяет другим внешним разработчикам писать расширения / плагины и переопределять или расширять любые второстепенные или основные функции в ядре.Думайте об этом как Wordpress CMS в Java EE, если это поможет.Как бы вы спроектировали систему плагинов на основе текущей архитектуры?
Один очевидный способ, который я могу придумать, - это переопределить или добавить новые функциональные возможности к надлежащему ресурсу (с проверкой, объектным сопоставителем), сервису, репозиторию и сущности и создатьбаночка + XML из этого.Но я хочу убедиться, что разработчик плагина должен написать абсолютно минимальный объем кода, чтобы новая функциональность работала, и в то же время повторно использовать основной код.
Предположим, вы хотите создать блог-пост в Wordpress.расширение, позволяющее создавать сообщения в блоге с несколькими дополнительными полями, которые еще не существуют в ядре.Какой самый простой и понятный способ разработать текущее приложение Java EE, чтобы он был легким для разработчиков плагинов / расширений?Какие-нибудь шаблоны, которые могут быть полезны, такие как шаблон стратегии или шаблонный метод?
Существуют ли Java CMS с открытым исходным кодом, которые следуют модели, используя Spring / JPA и стандартные технологии?