您的位置:首页 > 编程语言 > Java开发

Spring boot场景启动器

2020-07-26 15:01 232 查看

运行的探究

1、pom.xml

1.父项目
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
<!-- 点进spring-boot-starter-parent-->

<parent><!-- 他是来真正管理spring boot 应用里面所有的版本依赖 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath>../../spring-boot-dependencies</relativePath>
</parent>

Spring Boot的版本仲裁
以后我们导入依赖默认是不需要写版本的(没有在dependencies里面管理的自然需要声明版本号)

2.导入依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
spring-boot-starter-web

   spring-boot-starter:spring boot的启动器;帮我们导入正常运行所依赖度额组件
   spring boot 将所有的功能场景都抽取出来,做成一个个starter(启动器),只需要在项目里面引入这些starter相关场景的所有依赖都会导入进来。要用什么功能就导入什么场景的启动器

spring-boot-starter-web

2.主程序类,入口类

/**
* @SpringBootApplication  标明一个主程序类 说明这是一个spring boot应用
*/
@SpringBootApplication
public class HellowWordMainApplication {

public static void main(String[] args) {
//spring 应用启动起来
SpringApplication.run(HellowWordMainApplication.class,args);
}
}

@SpringBootApplication:Spring Boot 应用标注在某个类上说明这个类是spring boot的主配置类,springBoot就应该运行这个类的main方法来启动springboot应用
(Ctrl 点开这个注解)

@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:spring boot的配置类
      标注在某个类上,表示这是一个springboot的配置类
      @Configuration:配置类上来标注这个注解
            配置类----配置文件;配置类也是容器中的一个组件@Component

@EnableAutoConfiguration:开启自动配置功能;
      以前需要配置的东西;springboot自动帮我们配置;@EnableAutoConfiguration告诉springboot开启自动配置功能;这样自动配置功能才能生效

@AutoConfigurationPackage
@Import({EnableAutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration {

      @AutoConfigurationPackage
      @Import({Registrar.class})spring的底层注解@Import给容器导入一个组件,导入的组件由Registrar.class,
将主配置类(@SpringBootApplication标注的类)的所在包及下面所有的子包里面的所有组件扫描到Spring容器

@Import({EnableAutoConfigurationImportSelector.class})
给容器中导入组件?
EnableAutoConfigurationImportSelector:导入那些组件的选择器
将所有需要导入的组件以全类名的方式返回;这些组件就会被添加到容器中;
会给容器中导入非常多的自动配置类(xxxAutoConfiguration);就是给容器中导入这个场景所需要的所有组件,并配置好这些组件;
有了自动配置类,免去了我们手动编写配置注入功能组件等工作;
SpringFactoriesLoader.loadFactoryNames(EnableAutoConfiguration.class,classLoader);
springboot在启动的时候从类路径下的META-INF/spring.factories中获取EnableAutoConfiguratio获取的值,将这些值作为自动配置类导入到容器中,自动配置类就生效了,帮我们进行自动配置工作以前我们需要配置的东西,自动配置类都帮我们配置好

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: