I am using Spring @Configuration annotation to configure my application.
Currently, I have a single @Configuration class where all my beans are declared. As the number of beans is growing (more than 30), I want to split it in many classes.
Some beans are using common classes (mainly utility classes) :
Foo.class is an utility class
Bar.class and Baz.class both use Foo.class
I want to have all Foo, Bar and Baz in three distinct @Configuration classes (respectively Conf1, Conf2 and Conf3)
The problem is that I don’t have access to an instance of Conf1 from Conf2 and 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;
}
}
Any idea on how can I solve this issue ?
You should be able to autowire them:
Alternatively, you can autowire beans rather than configurations: