Question

I have a java config class that imports xml files with the @ImportResources annotation. In the java config I'd like to reference to beans that are defined in the xml config, e.g. like:

@Configuration
@ImportResource({
        "classpath:WEB-INF/somebeans.xml"
    }
)
public class MyConfig {
    @Bean
    public Bar bar() {
        Bar bar = new Bar();
        bar.setFoo(foo); // foo is defined in somebeans.xml
        return bar;
    }
}

I'd like to set the bean foo that has been defined in somebeans.xml to the bar bean that will be created in the java config class. How do I get the foo bean?

Was it helpful?

Solution

Either add a field in your configuration class and annotate it with @Autowired or add @Autowired to the method and pass in an argument of the type.

public class MyConfig {

    @Autowired
    private Foo foo;

    @Bean
    public Bar bar() {
      Bar bar = new Bar();
      bar.setFoo(foo); // foo is defined in somebeans.xml
      return bar;
    }
}

or

public class MyConfig {
    @Bean
    @Autowired
    public Bar bar(Foo foo) {
        Bar bar = new Bar();
        bar.setFoo(foo); // foo is defined in somebeans.xml
        return bar;
    }
}

This is all explained in the reference guide.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top