2016-07-18 1 views
2

Je ne connais pas encore le printemps et la noisette. J'ai une application spring-boot avec une couche de service qui devrait utiliser un imap noisette. Le problème que j'ai est que je ne sais pas comment j'obtiens le magasin de carte qui stocke les données à un composant de ressort avec seulement la configuration de Java. L'ajout de l'annotation du composant n'est pas suffisant et mon référentiel autowired est null.Nappe MapStore en tant que composant de ressort

@Component 
public class MyMapStore extends implements MapStore<Long, MyClass>, MapLoaderLifecycleSupport{ 
@Autowired 
private MyRepository repository; 
... 
} 

J'ai écrit un ContextAccessor statique pour charger mon haricot, manuellement, mais cela ne fonctionne que dans l'environnement IDES et non si je commence mon application comme pot

@Component 
public class MyMapStore extends implements MapStore<Long, MyClass>, MapLoaderLifecycleSupport{ 

private MyRepository repository = StaticContextAccessor.getBean(MyRepository.class); 
... 
} 

Le problème ici est que tous les haricots Le bean est déjà chargé et le référentiel n'est pas initialisé.

Y a-t-il une quelconque possibilité pour que la mapstore soit exécutée en tant que composant de printemps ou même que la force de noisettage soit initialisée après le chargement de mes dépôts? Merci pour votre aide.

+0

J'ai une solution mais je ne suis pas très content. J'ai initialisé le magasin de cartes dans ma configuration Hazelcast et ajouté le référentiel en tant qu'argeur du constructeur. Cela fonctionne mais le magasin n'est même pas un vrai composant de printemps. 'MapStoreConfig.setImplementation (new MyMapStore (this.repository));' Ce serait bien si quelqu'un pouvait m'aider avec une meilleure solution. – pDer666

Répondre

1

Vous pouvez câbler et instancier votre MapStore dans Spring, puis utiliser la méthode mapStoreConfig.setImplementation(yourSpringMapStore) lors de la préparation de la configuration (y compris MapConfig) pour Hazelcast.

Vous pouvez ensuite lancer Hazelcast manuellement ou au printemps en utilisant une méthode d'usine.