spring-boot入门环境
POM
1.父项目(用来管理spring-boot应用管理的所有依赖版本)-- spring-boot的依赖版本仲裁中心,以后导入jar包默认是不需要写版本的(当然没有在dependencies管理的依赖还是需要声明版本号的)
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.2.RELEASE</version> </parent>
2.导入依赖
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
spring-boot-starter:spirng-boot场景启动器
spring-boot-starter-web:帮我们导入了web项目正常运行所需要的组件
例如
spring-boot-starter-mail:帮我们导入了项目发送邮件等所需要的组件
/** * @SpringBootApplication 用来标注一个主程序类,说明这个一个Spring boot应用 */ @SpringBootApplication public class HelloWorldMainApplication { public static void main(String[] args){ SpringApplication.run(HelloWorldMainApplication.class,args); } }
点进去查看 @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 { }
1.@SpringBootConfiguration: Spring boot的配置类注解;标注在某个类上,表明这是spring boot的配置类
点进@SpringBootConfiguration 可以看到 @Configuration:配置类上来标注这个注解。
配置类(类似xml之类的配置文件):配置类也是容器的一个组件:@Component
2.@EnableAutoConfiguration: 开始自动配置,以前我们需要手动配置的东西,spring-boot帮我们配置好,@EnableAutoConfiguration告诉spring boot开启自动配置功能。
点击去@AutoConfigurationPackage:自动配置包
点进去@Import({Registrar.class}):spring低沉注解,给容器导入一个中间件。导入的组件由AutoConfigurationPackage.Registrar.class
作用:将@SpringBootConfiguration标注的所有包的所有组件扫码到spring容器。(我觉得类似spring的注解扫描 <context:component-scan >)
将主配置类(@SpringBootApplication标注的类)的所在包及下面所有子包里面的的所有组件扫描到spring容器。
@SpringBootConfiguration标注下的类下的所有包都会被扫码,例如不在@SpringBootConfiguration标注下的类的包和类就不会被扫码进去。
3.@Import({AutoConfigurationImportSelector.class})
给容器导入组件
AutoConfigurationImportSelector:导入哪些组件的选择器;
将所有需要导入的组件以全类名的方式返回,这些组件就会被添加到容器中。
会给容器中导入非常多的自动配置类(xxxAutoConfiguration):就是给容器中导入这个场景需要的所有组件,并配置好这些组件。
SpringFactoriesLoader.loadFactoryNames(this.getSpringFactoriesLoaderFactoryClass(), this.getBeanClassLoader());
Spring Boot启动的时候从类路径下的META-INF/Spring.factories中获取EnableAutoConfiguration指定的值,将这些值自动配置类导入到容器中,自动配置类就生效了,帮我们进行自动配置的工作。
J2EE的整体解决方案和自动配置都在spring-boot-autoconfigure-2.0.2.RELEASE.jar中。