如果无产阶级不能发出自己的声音,他们就会被社会遗忘。
其中它主要是依赖一个父项目,主要是管理项目的资源过滤及插件!
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
点进去,发现还有一个父依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath>../../spring-boot-dependencies</relativePath>
</parent>
这里才是真正管理SpringBoot应用里面所有依赖版本的地方,SpringBoot的版本控制中心;
以后我们导入依赖默认是不需要写版本号; 但是如果导入的包没有在依赖中管理着就需要手动配置版本了。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
springboot-boot-starter-xxx
:就是spring-boot的场景启动器spring-boot-starter-web
:帮我们导入了web模块正常运行所依赖的组件SpringBoot将所有的功能场景都抽取出来,做成一个个的starer(启动器),只需要在项目中引入这些starter即可,所有相关的依赖都会导入进来,我们要用什么功能就导入什么样的场景启动器就好了,当然我们也可以自定义starter;
/**
* 程序的主入口
*/
// 本身就是一个Spirng的组件, 就是一个Spring的配置类
@SpringBootApplication
public class SpringBootApplication {
public static void main(String[] args) {
// 将springboot 应用启动
SpringApplication.run(FirstSpringBoot.class, args);
}
}
作用: 标注在某个类上说明这个类是SpringBoot的主要配置类,SpringBoot就应该运行在这个配置类的main方法来启动SpringBoot应用。
并且此注解是一个复合注解,看一下:
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
excludeFilters = {@Filter(
type = FilterType.CUSTOM,
classes = {TypeExcludeFilter.class}
), @Filter(
type = FilterType.CUSTOM,
classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication {
}
该注解在Spring中很重要,它对应着XML配置中的元素。
作用:自动扫描并加载符合条件的组件或bean,将这个bean定义加载到IOC容器中。
作用:Spring Boot的配置类。标注在哪个类上面,就表示该类是Spring Boot的一个配置类。
进去这个注解看一下:
@Configuration
public @interface SpringBootConfiguration {
}
@Component
public @interface Configuration {
}
自动配置
功能两个@importer:
@SpringBootApplication 注解原理主要通过两个@Import 注解,将配置的组件加载到 Spring 容器中,最终得以让 Spring 容器启动,其实底层还是通过 Spring 来实现的,你如果了解 Spring 容器底层实现,这块就会一目了然。
①会将 @SpringBootApplication 标注的主配置类,所在包及下面所有子包里面的所有组件扫描到 Spring 容器中;(这个注解:@Import(AutoConfigurationPackages.Registrar.class) )
②会将 SpringBoot 为 J2EE 企业级开发的默认配置,全部加载到 Spring 容器中。(这个注解:@Import(EnableAutoConfigurationImportSelector.class) )
@SpringBootApplication
public class FirstSpringBoot {
public static void main(String[] args) {
// 将springboot 应用启动
SpringApplication.run(FirstSpringBoot.class, args);
}
}
SpringApplication.run分析
分析该方法主要分两部分
这个类主要做了一下四件事情: