2012-05-22 37 views
8

Estoy usando Spring @Configuration para configurar mi aplicación.Clases múltiples @Configuration de Spring

Por el momento tengo una sola clase @Configuration en la que se declaran todos mis beans. Como el número de granos crece (más de 30), quiero dividirlo en muchas clases.

Algunos granos están utilizando clases comunes (principalmente clases de utilidad):

Foo.class es una clase de utilidad Bar.class y Baz.class tanto para uso Foo.class

Quiero tener Foo, Bar y Baz en tres distintas clases @Configuration (respectivamente Conf1, Conf2 y Conf3)

El problema es que no tengo acceso a una instancia de conf1 de CONF2 y Conf3:

Conf1.class

@Configuration 
public class Conf1 { 
    @Bean 
    public Foo foo() { 
     return new Foo(); 
    } 
} 

Conf2.class

@Configuration 
public class Conf2 { 
    @Bean 
    public Bar bar() { 
     Bar bar = new Bar(); 
     bar.setFoo(conf1.foo()); // Not possible ! 
     return bar; 
    } 
} 

Conf3.class

@Configuration 
public class Conf3 { 
    @Bean 
    public Baz baz() { 
     Baz baz = new Baz(); 
     baz.setFoo(conf1.foo()); // Not possible ! 
     return baz; 
    } 
} 

¿Alguna idea sobre cómo puedo solucionar este problema?

Respuesta

9

Usted debe ser capaz de Autowire ellos:

@Configuration 
public class Conf2 { 
    @Autowired 
    Conf1 conf1; 
    ... 
} 

Como alternativa, puede Autowire granos en lugar de configuraciones:

@Configuration 
public class Conf2 { 
    @Autowired 
    Foo foo; 
    ... 
} 
+0

@Autowired, por supuesto! gracias axtavt – chrisnfoneur

5
@Configuration 
@Import({ DataSourceConfig.class, TransactionConfig.class }) 
public class AppConfig extends ConfigurationSupport { 
     // bean definitions here can reference bean definitions in DataSourceConfig or TransactionConfig 
} 
+0

Esto era lo que necesitaba ya que tengo varias fuentes de datos y esta era una manera limpia de colgarlos todos de SpringWebConfig.class. –

+0

¡Me alegro de que haya sido útil! :) – jujadhav

Cuestiones relacionadas