SpringBoot入门篇
- 添加依赖
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
- 应用启动类
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); } }
- 注解@SpringBootApplication说明
@SpringBootApplication是一个组合注解。
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class), @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) }) public @interface SpringBootApplication { }
@SpringBootConfiguration也是一个组合注解。
@Configuration:如果一个类上添加了@Configuration,代表是一个JavaConfig,可以充当Spring容器,相当于Spring的配置文件。
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Configuration public @interface SpringBootConfiguration { }
@EnableAutoConfiguration也是一个组合注解。
@AutoConfigurationPackage:表示将主配置类(即@SpringBootApplication 标注的类)所在的包及其子包里的所有类都纳入 Spring 容器。
@Import 注解,是 Spring 的底层注解。它给容器中导入一个了组件 (AutoConfigurationImportSelector.class)。
AutoConfigurationImportSelector 确定了导入哪些组件到选择器,这些组件会被自动添加到 Spring 容器。
可以看spring-boot-autoconfigure.jar 下 META-INF/spring.factories文件以及jar里面的自动配置相关类,这些自动配置类作用就是帮我们自动配置好,来达到简化开发、提供效率的目的。
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @AutoConfigurationPackage @Import(AutoConfigurationImportSelector.class) public @interface EnableAutoConfiguration { }