18. Using the @SpringBootApplication Annotation
Many Spring Boot developers like their apps to use auto-configuration, component scan and
be able to define extra configuration on their "application class". A single
@SpringBootApplication
annotation can be used to enable those three features, that is:
The @SpringBootApplication
annotation is equivalent to using @Configuration
,
@EnableAutoConfiguration
, and @ComponentScan
with their default attributes, as shown
in the following example:
package com.example.myapplication;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
![[Note]](images/note.png) | Note |
---|
@SpringBootApplication also provides aliases to customize the attributes of
@EnableAutoConfiguration and @ComponentScan .
|
![[Note]](images/note.png) | Note |
---|
None of these features are mandatory and you may choose to replace this single annotation
by any of the features that it enables. For instance, you may not want to use component
scan in your application: package com.example.myapplication;
import org.springframework.boot.SpringApplication;
import org.springframework.context.annotation.ComponentScan
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
@Configuration
@EnableAutoConfiguration
@Import({ MyConfig.class, MyAnotherConfig.class })
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
} In this example, Application is just like any other Spring Boot application except that
@Component -annotated classes are not detected automatically and the user-defined beans
are imported explicitly (see @Import ). |