La réponse est oui. Vous pouvez utiliser Spring DM, mais vous n'êtes pas obligé de le faire. C'est probablement mieux avec ça.
Je l'ai fait sans Spring DM et la principale préoccupation est les problèmes de chargement de classe (pas sûr si Spring DM les résout, mais je suppose que cela devrait). En supposant que vous regroupiez le Spring JAR dans un plugin séparé avec des dépendances, vous devrez charger le contexte avec le chargeur de classe du plugin appelant.
Exemple:
- Plugin A - votre plugin fonctionnel
- Plugin B - Le plug-in Spring plug-in lib exporter les paquets de printemps
A dépend de B. Lorsque l'extension A démarre, il va charger le contexte de l'application, lorsque vous appelez cette charge, vous devrez faire quelque chose comme:
Thread.currentThread().setContextClassLoader(PluginAActivator.class.getClassLoader())
Pour que le chargement des classes se fasse sous votre propre chargeur de classe. Vous pouvez maintenant utiliser un ClassPathXmlApplicationContext
pour charger les XML de configuration à partir de votre chemin de classe.
Une petite note: la valeur par défaut ClassPathXmlApplicationContext
valide vos XML lors du chargement. Vous pouvez le désactiver ou pointer vos XML vers un schéma local (plutôt que le schéma Spring standard sur springframework.org), sinon, vous vous connecterez à Internet pour télécharger les fichiers de schéma lors du chargement et travailler hors connexion échouera.
Il existe de nombreux domaines dans lesquels l'utilisation de Spring Spring à l'intérieur d'OSGi peut vous causer de la douleur. Je vous recommande fortement de passer à Spring DM si vous prévoyez de continuer à utiliser Spring avec OSGi. – SteveD
Vous n'aurez pas besoin de gérer le chargeur de classe de contexte dans le code si vous utilisez Spring DM et que vous ne créerez plus manuellement les contextes d'application. – SteveD
Un certain temps s'est écoulé depuis que j'ai écrit cette réponse. En effet, Spring OSGi (anciennement Spring DM) fournit tout ce dont vous avez besoin dans un package soigné, y compris un contexte d'application qui fonctionne sans problème et la possibilité d'exposer les services OSGi en les définissant dans vos XML Spring. Essaie. – zvikico