Je možné automaticky zaregistrovať jar @Component
(alebo niektorou z jej špecifikácií; @Repository
) ako službu OSGi? Takže môžem použiť autowiring a všetky ostatné výhody Spring v jednom zväzku a služobný register OSGi komunikovať medzi balíčkami?
UPDATE: Od tejto diskusii zdá sa, že nie je možné používať štandardný Blueprint, iba v Eclipse Gemini.
odpovede:
5 pre odpoveď č. 1Predpokladám, že ste to oboznámení Eclipse Gemini Blueprint (predtým jarné dynamické moduly, predtým jarné OSGi)?
Fazuľa exportujete pomocou <service>
tag, Nie som si istý, či môžete exportovať všetky @Component
atď anotované fazuľa automaticky.
1 pre odpoveď č. 2
Možná implementácia na podporu tohto bez toho, aby sa hack @ AlexeyRomanov navrhol by mohol byť pridať a BeanFactoryPostProcessor
implementácia na rozšírený balík Gemini Blueprint prostredníctvom fragmentu.
Tento procesor by mohol vytvoriť potrebné definície exportu OSGi v BeanFactory a mal by fungovať správne.
Príklad, ako by to mohlo vyzerať, je ServiceReferenceInjectionBeanPostProcessor
vytvorí rozšírenie SpringDM "s / Gemini", ktoré vám umožní vstreknúť OSGi-Services cez @ServiceReference
anotácie. (Hoci som spojil jarné DM, táto trieda by mala byť stále prítomná v Gemini, ale nemohla som nájsť priamu väzbu na ich javadoc)
0 pre odpoveď č. 3
Nepríjemné riešenie, iba pre jednobunkové bôby: ukladajte inštanciu do statického poľa v konštruktore a použite tento getrový pohľad ako vašu továrenskú metódu Blueprint / iPOJO.