Ответ - да. Вы можете использовать Spring DM, но вам не нужно. Наверное, лучше с этим.
Я сделал это без Spring DM, и основная проблема - проблемы с загрузкой классов (не уверен, что Spring DM решит их, но, думаю, так и должно быть). Предполагая, что вы связываете Spring JAR в отдельный плагин с зависимостями, вам нужно будет загрузить контекст с загрузчиком классов вызывающего плагина.
Пример:
- Плагин А - ваш функциональный плагин
- Плагин B - Плагин Spring lib, экспортирующий весенние пакеты
Плагин A зависит от B. Когда плагин A запускается, он загружает контекст приложения, при вызове этой загрузки вам нужно будет сделать что-то вроде:
Thread.currentThread().setContextClassLoader(PluginAActivator.class.getClassLoader())
Так что загрузка классов будет происходить под вашим собственным загрузчиком классов. Теперь вы можете использовать ClassPathXmlApplicationContext
для загрузки конфигурационных XML-файлов из вашего пути к классам.
Одна небольшая заметка: по умолчанию ClassPathXmlApplicationContext
проверяет ваши XML при загрузке. Вы можете отключить его или указать свои XML-файлы на локальной схеме (а не на стандартной схеме Spring на springframework.org), в противном случае вы подключитесь к Интернету, чтобы загрузить файлы схемы после загрузки, и работа в автономном режиме не удастся выполнить. *