2010-06-24 23 views
1

J'ai plusieurs composants qui ont une portée d'application. Selon l'environnement dans lequel je suis, je veux installer l'un ou l'autre. Dans JBoss Seam, j'utiliserai @Install (false), puis je configurerai le bean que je voulais via components.xml. Y at-il une méthode similaire pour ce faire dans CDI/WELD?CDI - installation conditionnelle

Merci,

Walter

Répondre

1

Eh bien, vous pouvez toujours utiliser une méthode de production et décider la mise en œuvre à instancier basée sur une configuration de la vôtre. Rappelez-vous que dans CDI, la quantité de xml est réduite au minimum.

Donc, quelque chose comme:

@Produces 
public Component createComponent() { 
    if (configuration.isSomething()) { 
     return new ComponentImpl1(); 
    } else { 
     return new ComponentImpl2(); 
    } 
} 
+0

droit, ok, je pense que je me souviens Pete montrant cet exemple. Je pense que cela va marcher pour moi. –

+0

J'ai un autre cas d'utilisation, je pense que je vais écrire une extension. Lorsque le serveur démarre, je vais déterminer si je veux installer ou enregistrer ce bean à ce moment-là. Si je ne le fais pas, je supprimerai simplement cette définition du conteneur. Donc, je pense que je voudrais ajouter une annotation indiquant quand l'installer, s'il ne doit pas être installé, il est supprimé ... –