Spring Method Injection with Java Configuration
Join the DZone community and get the full member experience.
Join For FreeLast week, I described how a Rich Model Object could be used with Spring using Spring’s method injection from an architectural point of view.
What is missing, however, is how to use method injection with my new preferred method for configuration, Java Config. My start point is the following, using both autowiring (<shudder>) and method injection.
public abstract class TopCaller { @Autowired private StuffService stuffService; public SomeBean newSomeBean() { return newSomeBeanBuilder().with(stuffService).build(); } public abstract SomeBeanBuilder newSomeBeanBuilder(); }
Migrating to Java Config requires the following steps:
- Updating the caller structure to allow for constructor injection
- For method injection, provide an implementation for the abstract method in the configuration class
- That’s all…
import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Scope; @Configuration public class JavaConfig { @Bean public TopCaller topCaller() { return new TopCaller(stuffService()) { @Override public SomeBeanBuilder newSomeBeanBuilder() { return someBeanBuilder(); } }; } @Bean public StuffService stuffService() { return new StuffService(); } @Bean @Scope(BeanDefinition.SCOPE_PROTOTYPE) public SomeBeanBuilder someBeanBuilder() { return new SomeBeanBuilder(); } }
Published at DZone with permission of Nicolas Fränkel, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.
Comments