You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A full Spring Boot starter for a library may contain the following components:
7120
+
A typical Spring Boot starter contains code to auto-configure and customize the infrastructure of a given technology, let's call that "acme".
7121
+
To make it easily extensible, a number of configuration keys in a dedicated namespace can be exposed to the environment.
7122
+
Finally, a single "starter" dependency is provided to help users get started as easily as possible.
7121
7123
7122
-
* The `autoconfigure` module that contains the auto-configuration code.
7123
-
* The `starter` module that provides a dependency to the `autoconfigure` module as well as the library and any additional dependencies that are typically useful.
7124
+
Concretely, a custom starter can contain the following:
7125
+
7126
+
* The `autoconfigure` module that contains the auto-configuration code for "acme".
7127
+
* The `starter` module that provides a dependency to the `autoconfigure` module as well as "acme" and any additional dependencies that are typically useful.
7124
7128
In a nutshell, adding the starter should provide everything needed to start using that library.
7125
7129
7126
-
TIP: You may combine the auto-configuration code and the dependency management in a single module if you do not need to separate those two concerns.
7130
+
This separation in two modules is in no way necessary.
7131
+
If "acme" has several flavours, options or optional features, then it is better to separate the auto-configuration as you can clearly express the fact some features are optional.
7132
+
Besides, you have the ability to craft a starter that provides an opinion about those optional dependencies.
7133
+
At the same time, others can rely only on the `autoconfigure` module and craft their own starter with different opinions.
7134
+
7135
+
If the auto-configuration is relatively straightforward and does not have optional feature, merging the two modules in the starter is definitely an option.
7127
7136
7128
7137
7129
7138
@@ -7134,7 +7143,7 @@ Do not start your module names with `spring-boot`, even if you use a different M
7134
7143
We may offer official support for the thing you auto-configure in the future.
7135
7144
7136
7145
As a rule of thumb, you should name a combined module after the starter.
7137
-
For example, assume that you are creating a starter for "acme" and that you name the auto-configure module `acme-spring-boot-autoconfigure` and the starter `acme-spring-boot-starter`.
7146
+
For example, assume that you are creating a starter for "acme" and that you name the auto-configure module `acme-spring-boot` and the starter `acme-spring-boot-starter`.
7138
7147
If you only have one module that combines the two, name it `acme-spring-boot-starter`.
0 commit comments