2011-07-23 3 views
0

Dans CDI, comment configurer mes beans?CDI: Comment prendre soin de la configuration des haricots?

Disons que j'ai ce code:

class JawaBotApp { 
    private void init(String configFilePathString) throws JawaBotException { 
     ConfigBean cb = new JaxbConfigPersister(configFilePathString).load(); 
     JawaBotApp.jawaBot = JawaBot.create(cb); 
    } 
} 

class JawaBot { 
    public static JawaBot create(ConfigBean cb) throws JawaBotException{ 
     JawaBot bot = new JawaBot(); 
     bot.applyConfig(cb); 
     bot.init(); 
     return bot; 
    } 
} 

Comment pourrais-je le convertir afin que les deux pourraient être des haricots CDI?

Je pensais à annoter le create() avec @Produces, mais qui aurait besoin d'avoir non-statique, et le réécrire de sorte que le ConfigBean obtient injecté, qui aurait besoin de réécrire JaxbConfigPersister ou créer un objet wrapper ... Trop de travail pour rien. Y a-t-il une meilleure approche?

Répondre

2

Quelque chose comme:

class JawaBot { 
    @Inject public JavaBot(@JawaConfig String configFilePathString) { 

     ... 
    } 
} 

Ensuite, vous avez juste besoin de produire une chaîne @JawaConfig quelque part qui représente votre configuration. Cela pourrait ensuite être moqué avec quelque chose comme une alternative ou spécialiser pour vous donner une config diff, ou juste un petit @ idiot qui regarde un autre fichier/paramètre externe.

Ensuite, vous n'avez qu'à @Injecter un JawaBot quand vous le voulez à la place de toutes les autres configurations, et tout reste dans le constructeur injecté.

+0

Sonne bien, va essayer. –

Questions connexes