Building Microservices with Spring
上QQ阅读APP看书,第一时间看更新

Configuring the dependency injection pattern with Spring

In this section, I will explain the process required to configure dependencies in an application. The mainstream injectors are Google Guice, Spring, and Weld. In this chapter, I am using the Spring Framework, so, we will see the Spring configuration here. The following diagram is a high-level view of how Spring works:

How Spring works using dependency injection pattern

In the preceding diagram, the Configuration Instruction is the meta configuration of your application. Here, we define the dependencies in Your Application Classes (POJOs), and initialize the Spring container to resolve the dependency by combining the POJOs and Configuration Instructions, and finally, you have a fully configured and executable system or application.

As you have seen in the preceding diagram, the Spring container creates the beans in your application, and assembles them for relationships between those objects via the DI pattern. The Spring container creates the beans based on the configuration that we give to the framework, so, it's your responsibility to tell Spring which beans to create, and how to wire them together.

Spring is very flexible in configuring the dependency of Spring beans. The following are three ways to configure the metadata of your application:

  1. Dependency injection pattern with Java-based configuration—it is an explicit configuration in Java.
  2. Dependency injection pattern with Annotation-based configuration—it is an implicit bean discovery, and automatic wiring.
  3. Dependency injection pattern with XML-based configuration—it is an explicit configuration in XML.

Spring provides three choices to wire beans in Spring. You must select one of the choices, but no single choice is the best match for any application. It depends on your application, and you can also mix and match these choices into a single application. Let's now discuss the dependency injection pattern with Java-based configuration in detail.