首页天道酬勤java springboot,超级无敌系统李凌

java springboot,超级无敌系统李凌

张世龙 05-04 04:53 106次浏览

springboot @ springbootapplication这个注解标注在 某个类上, 说明该类为 SpringBoot的主配置类,spring boot应该运行这个类的main()方法来启动SpringBoot的应用。 **@SpringBootApplication**来自什么呢? 点击后,你会发现其实是组合评论。 另外,两个重要评论@SpringBootConfiguration@EnableAutoConfiguration让我们分析这两个评论。 1.@ Springbootconfiguration @ springbootconfiguration此注解标注在 某个类上, 说明该类为 SpringBoot的 配置类SpringBoot没有spring这样的大量配置文件,因此SpringBoot 当然,单击http://www.Sina.com/http://www.Sina.com /可以看到其本质是组件。 所以添加是配置类,@SpringBootApplication的第二个评论* * @ enableautoconfiguration * *2. @ enableautoconfiguration 意为没有主内部有两个非常重要的评论:注解为 @Conguration@Configuration是Spring下的配置类注解,@SpringBootConfiguration是SpringBoot下的配置类注解,但二者的本质相同

1.@AutoConfigurationPackage自动部署包@ autoconfigurationpackag http://www.Sina.com/内部,此http://www.Sina.com /

3358www.Sina.com/注释是Spring的基础注释,用于将组件(即@Configuration的组件)导入到容器中,http://www .

我们主要看后面的配置类也是容器中的一个组件,那是@EnableAutoConfiguration,还有开启自动配置功能。也就是说我们之前需要配置的东西,现在都不需要配置了。 重点是,此实例对象获取的包名是什么?

关于此@EnableAutoConfiguration右键,此功能@AutoConfigurationPackage

计算其值后,结果如下

发现此结果与SpringBoot主配置类是同一软件包的软件包名称

摘要:@Import(AutoConfigurationImportSelector.class)的作用是将包含SpringBoot主配置类的包及其下面的所有子包中的所有组件扫描到Spring容器中

2.@ import (autoconfigurationimportselector.class ) import ) autoconfigurationimportselector.class

)

这一个注解的作用就是给容器中导入组件,这个注解需要导入的组件就是 AutoConfigurationImportSelector,也就是自动配置导入选择器,它可以帮我们选择需要导入的组件

进入AutoConfigurationImportSelector 查看源码,我们发现这与SpringBoot1.x版本有着一些区别,在SpringBoot2.x 中有一个静态内部类

大致的意思是 自动配置组, 能够帮我们完成一系列自动配置的操作。我们的重点回到 该 静态内部类下的process()方法

调用了getAutoConfigurationEntry()方法,该方法的作用就是告诉 Spring容器需要导入什么组件,并以 String[] 的形式返回全类名

从configurations(标蓝的一行), 我们可以看出 SpringBoot 已经帮我们自动导入了 124 个组件,从下图可以看出都是以全类名的形式返回。而且这些组件的名字都是以 ...AutoConfiguration 的形式命名,也就是什么自动配置类

有了这些自动配置类,我们就免去了手动配置注入功能组件的操作了

那为什么他能做到自动配置呢? 其实这也是有依据的。configurations 这个变量是由 getCandidateConfigurations() 方法得到的, 也就是获取候选的配置

这里调用了 SpringFactoriesLoader.loadFactoryNames(EnableAutoConfiguration.class,this.beanClassLoader) , 传入了两个参数

那我们就来看下 loadFactoryNames() 作用在这里又调用了loadSpringFactories(类加载器) 并将类加载器作为参数。

首先是在 133 行,从类加载器中加载一个资源,资源路径为FACTORIES_RESOURCE_LOCATION(即为)将获取到的一个资源赋值给 Enumeration类型的变量urls, 如果该变量中有下一个元素,说明这里面又包含资源,那就将这个资源加载成 properties 配置文件,并转换成为键值对即 Map类型的数据 进行返回

那我们也来看看 META-INF/spring.factories资源路径下的内容长什么样

总结: SpringBoot 在启动的时候就从类路径下的 META-INF/spring.factories 中获取EnableAutoConfiguration指定的值,并将这些值加载到自动配置类导入到容器中,自动配置类 就生效,帮助我们进行自动配置功能。 而这些自动配置类 全都在 spring-boot-autoconfigure-2.2.6.RELEASE.jar 该jar包之下

那我们现在就回到这个 META-INF/spring.factories 文件,我们找一个自动配置类作为示例,就例如最后的

org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration,\

我们点进去这个自动配置类看看为了配置了什么功能(太多了,随便列举几个在SpringMVC常见的)

内部资源视图解析器(能够帮我们拼接视图的前后缀)

java性能优化实践,java策略设计模式