2017-03-04 2 views
2

J'ai une classe Java Spring Configuration comme celle-ci. Je veux définir une variable dont dépendent plusieurs de mes beans, la transformer en bean et l'utiliser comme une dépendance. Comment est-ce que je peux faire la méthode setVariable() d'abord? Je convertis mon code à partir de Guice, où cette variable était définie dans la méthode 'Configuration' surchargée. Est-ce que Spring a quelque chose comme ça?Définition d'une variable commune dans la configuration de ressort

@Configuration 
class SpringConfiguration{ 
    String variable; 

    public void setVariable(){ 
     variable = System.getenv("whatever") 
    } 

    @Bean 
public void variable(){ 
    return variable; 
} 

    @Bean 
    public void myService(){ 
     return new MyService(variable); 
    } 

    @Bean 
    public void myService2(){ 
     return new MyService2(variable); 
    } 
+0

Copie possible de [Comment appeler une méthode après l'initialisation du bean?] (Http://stackoverflow.com/questions/1088550/how-to-call-a-method-after-bean-initialization-is- Achevée) – Jeremy

Répondre

3

Vous pouvez faire quelque chose comme ceci:

@Configuration 
class SpringConfiguration { 

    @Bean(name="variable") 
    public String geVariable() { 
     return System.getenv("whatever"); 
    } 

    @Bean 
    @DependsOn("variable") 
    public MyService getMyService() { 
     return new MyService(geVariable()); 
    } 

    @Bean 
    @DependsOn("variable") 
    public MyService2 getMyService2() { 
     return new MyService2(geVariable()); 
    } 
} 

Comme vous pouvez vous assurer que variable seront réinitialisés avant service1 et service2, notez que DependsOn dans ce cas est uniquement à des fins de clarification.