2013-07-27 1 views
0

Nous utilisons spring + spring data jpa repositories + maven comme environnement de construction. Nous déployons nos guerres de projet sur plusieurs environnements de nuage.Conditionnellement à l'exclusion des données de printemps des référentiels jpa

Pour un environnement cloud particulier, nous récupérons les informations d'identification de connexion à partir de la base de données. Par ex. Pour AWS nous pouvons avoir objet de domaine AWSCredentials et AWSCredentialsRepository Pour Azure nous pouvons avoir AzureCredentials objet de domaine et AzureCredentialsRepository.

Existe-t-il un moyen dans les données de printemps jpa que nous puissions conditionnellement charger des dépôts en utilisant un paramètre du script de construction?

Par exemple: Je souhaite déployer sur un nuage azur. Donc, je voudrais seulement AzureCredentials domaine et AzureCredentialsRepository mais pas AWS.

Existe-t-il une manière élégante de le faire dans spring?

Répondre

-1

J'utiliser des profils de printemps pour y parvenir, par exemple dans votre ressort context.xml:

<beans profile="AWS> 
<jpa:repostiories base-package="package.repositories.aws"/> <!-- package with aws repository --> 
<beans> 

<beans profile="Azure"> 
<jpa:repositories base-package="package.repositories.azure"> 
<beans> 

Référentiels seront créés uniquement pour le profil actif. Les profils sont une chose qui devrait vous intéresser.

+0

Un moyen de le profiler dans une annotation JavaConfig? Quelque chose comme @MyProfile @EnableJpaRepositories (basePackages = {"com.nsn.nitro.project.data.jpa"}, repositoryFactoryBeanClass = com.nsn.nitro.project.data.jpa.repository.GenericRepositoryFactoryBean.class) – Stephane

+0

Je n'ai pas vérifiez, mais je pense que deux classes de configuration avec des annotations @Profile devraient faire l'affaire. – wjtk

+0

J'ai utilisé l'annotation conditionnelle et cela a fait l'affaire. – Stephane

Questions connexes