对上一篇SpringBoot中“HelloWorld”的探究
2021-04-09 20:26
标签:ade ble clu 导包 reg boot classes interface 指定 1.POM文件 1.父项目 | 上即:SpringBoot的版本仲裁中心! | 即此后导入依赖默认是不需要写版本;(没有在dependencies里面管理的依赖还是要写的,但是在此包括几乎所有要使用的依赖) 2.导入的依赖 | spring-boot-starter-web | spring-boot-starter:spring-boot场景启动器。即帮我们导入了web模块正常运行所依赖的组件。 | starter:即一系列依赖大集合的描述。 SpringBoot将所有的功能场景都抽出来,做成一个个starters(启动器),只需要在项目里面引用这些starters相关场景,随后其所需的所有依赖都会被导进来。并且版本由SpringBoot自动控制(即通过上面的父属性)。要用什么功能就导入什么场景的启动器。 3.主程序类,主入口类 | @SpringBootConfiguration:SpringBoot的配置类;标注在某个类上,表示这是一个SpringBoot的配置类。 |@Configuration:配置类上标注这个注解。 | 上面所说的几个配置类其实就相当于----平时写的配置文件;配置类也是容器中的组件。@Component |@EnableAutoConfiguration:开启自动配置功能。 | @AutoConfigurationPackage:自动配置包。 | @Import({AutoConfigurationPackage.Registrar.class}):即spring底层注解@Import,给容器导入一个组件,导入的组件由AutoConfigurationImportSelector.class,将主配置类(@SpringBootApplication所标注的类)的所在包以及下面所有子包里面的所有组件扫描到Spring容器中去。 | @Import({AutoConfigurationImportSelector.class}):给容器中导入组件。(该插件翻译为开启自动配置类的导包的选择器);AutoConfigurationImportSelector.class:即导入哪些选择器;将所有需要导入的组件以全类名的方式返回。这些组件就会被添加到容器中去。 最终会给容器中导入非常多的自动配置类(即xxxAutoConfiguration)。就是给容器中导入这个场景所需要的所有组件,并且配置好这些组件。在此下图有96个自动配置类。 | 有了这些自动配置类,就省的我们手动编写配置注入等工作了。 |SpringFactoriesLoader.loadFactoryNames(@EnableAutoConfiguration.class,classLoader); | SpringBoot在启动的时候从类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值,将这些值作为自动配置类导入到容器中,后,自动配置类生效,后,帮我们进行自动配置工作。 J2EE的整体整合方案和自动配置都在spring-boot-autoconfigure-2.2.1.RELEASE.jar里面。 如有不妥,敬请斧正。 对上一篇SpringBoot中“HelloWorld”的探究 标签:ade ble clu 导包 reg boot classes interface 指定 原文地址:https://www.cnblogs.com/chenjiajiale/p/13371634.htmlparent>
groupId>org.springframework.bootgroupId>
artifactId>spring-boot-starter-parentartifactId>
version>2.2.1.RELEASEversion>
relativePath/>
parent>
parent>
groupId>org.springframework.bootgroupId>
artifactId>spring-boot-dependenciesartifactId>
version>2.2.1.RELEASEversion>
relativePath>../../spring-boot-dependenciesrelativePath>
parent>
dependency>
groupId>org.springframework.bootgroupId>
artifactId>spring-boot-starter-webartifactId>
dependency>
package com.test;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//告诉springboot这是个springboot应用(@SpringBootApplication)
//用于来标注主程序类
@SpringBootApplication
public class HelloWorldMain {
//args是可变参数
public static void main(String[] args) {
/**将spring应用启动起来
* HelloWorldMain.class 为主程序
**/
SpringApplication.run(HelloWorldMain.class,args);
}
}
|@SpringBootApplication:即SpringBoot应用,标注在某个类上,说明这个类是SpringBoot的主配置类。SpringBoot就应该运行这个类的main方法来启动SpringBoot应用。
|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 {
@AutoConfigurationPackage
@Import({AutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration {
上一篇:07、DDL数据定义语言
文章标题:对上一篇SpringBoot中“HelloWorld”的探究
文章链接:http://soscw.com/index.php/essay/73467.html