框架技术---SpringBoot(⼀)简介
微服SpringBoot
⼀、SpringBoot简介
1.1 SpringBoot 解决Spring的缺点
基与约定⼤于配置。
1.2 SpringBoot 特点
可以快速⼊门
开箱即⽤,不⽤繁琐的xml配置
将⾮功能性特性(服务器tomcat,性能检测等),嵌⼊springBoot中
以功能为单位 导⼊相应依赖
微服务
Martin fowler的⽂章介绍。
是⼀种架构风格,开发⼀个应⽤时,是⼀组⼩型服务。可以通过Http的⽅式进⾏互通,多应⽤在各⾃运⾏的互联。
每⼀个功能元素最终都是⼀个可独⽴替换和升级的软件单元。
将功能单元微化独⽴出来,形成⼀个⼀个单独的功能模块,不同模块之间⽤轻量级的HTTP进⾏相互通信。最后⾏成⼀个类似与神经⽹络⼀样的结构,⼀个功能模块就是⼀个结点。
详细参照的中⽂⽂章:
martinfowler/microservices/
www.jianshu/p/4821a29fa998
⼆、 SpringBoot原理分析springboot框架的作用
2.1 POM⽂件
2.1.1 ⽗项⽬
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.9.RELEASE</version>
<relativePath>../../spring-boot-dependencies</relativePath>
</parent>
这是它的⽗项⽬;管理SpringBoot应⽤⾥⾯所有依赖版本
SpringBoot的版本仲裁中⼼;
以后我们导⼊依赖默认不需要写版本;(没有在⽗项⽬中的dependencies⾥⾯管理的依赖⾃然需要写版本号)
2.1.2 导⼊的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
spring-boot-starter-web:
Spring-boot 场景启动器:帮我们导⼊web模块正常运⾏所依赖的组件。
Spring Boot 将所有的功能场景都抽取出来,做成⼀个个starter ;只需要在项⽬⾥⾯引⼊这些starter相关场景的所有依赖都会导进来。⽤那个功能就导⼊那个场景。不需要写版本,Spring Boot会给我们适配。
2.2 主程序类,主⼊⼝
/**
* @SpringBootApplication 来标注这是⼀个主程序类,说明这是⼀个Spring Boot应⽤
* 说明这个类是SpringBoot的主配置类
*/
@SpringBootApplication
public class Springboot02Application {
public static void main(String[] args) {
SpringApplication.run(Springboot02Application.class, args);
}
@SpringBootConfiguration 说明这个类是SpringBoot的主配置类
等价与:
@Configuration 配置类上来标注这个注解;
配置类: 配置⽂件;配置类也是容器中的⼀个组件;@Component
@EnableAutoConfiguration 开启⾃动配置功能;
告诉SpringBoot开启⾃动配置,这样⾃动配置才能⽣效。
@AutoConfigurationPackage:⾃动配置包
@Import(AutoConfigurationPackages.Registrar.class)
这是SpringBoot的底层注解;
将主配置类(@SpringBootConfiguration标注的类)的所在包及下⾯所有⼦包⾥⾯的所有组件扫描到Spring容器中。
@Import({AutoConfigurationImportSelector.class}) 导⼊需要组件的选择器
会给容器中导⼊⾮常多的⾃动配置类;就是给容器中导⼊这个场景需要的所有组件,并配置好这些组件。
三、SpringBoot配置⽂件
1.配置⽂件
SpringBoot使⽤⼀个全局的配置⽂件;配置⽂件的名字是固定的。
application.properties
配置⽂件的作⽤:
修改SpringBoot⾃动配置的默认值;SpringBoot底层已经帮我们配置好了。
四、SpringBoot⾃动配置的原理过程
1. SpringBoot启动时,通过加载主配置类
进⼊@SpringBootApplication注解中;开启⾃动配置功能;
@EnableAutoConfiguration
2. @EnableAutoConfiguration的作⽤:
进⼊@Import({AutoConfigurationImportSelector.class})注解;利⽤AutoConfigurationImportSelector选择器给容器导⼊⼀些组件;可以插⼊public String[] selectImports(AnnotationMetadata annotationMetadata) ⽅法中的内容。
List configurations = CandidateConfigurations(annotationMetadata, attributes);获取⾃动配置
List configurations = SpringFactoriesLoader.SpringFactoriesLoaderFactoryClass(),
扫描所有jar类路径下:META-INF/spring.factories.
把扫描到的⽂件包装成properties对象
从propertis中获取EnableAutoConfiguration.class类对应的值,添加到容器中。
总结⼀句话
将类路径下,META-INF/spring.factories ⾥⾯配置的所有EnableAutoConfiguration的值加⼊到容器中
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoCon .CassandraAutoConfiguration,\
org.springframework.boot.autoconfigure.cloud.CloudServiceConnectorsAutoConfiguration
每⼀个这样的 xxAutoConfiguration类都是容器中的⼀个组件。都加⼊到容器中,⽤他们来进⾏⾃动配置;
3. 每⼀个⾃动配置类进⾏⾃动配置功能。
4. 所有在配置⽂件中能配置的属性都是在XXXXProperties类中封装着。配置⽂件能配置什么就可以参考某个功能对应的这个属性类
五、⾃动配置报告
⾃动配置类必须在⼀定的条件下才会⽣效:
查看有哪些⾃动配置类⽣效了;
在application.properties中添加下⾯配置
debug=true // 该属性让控制台打印⾃动配置报告
springBoot精髓:
1.springBoot启动会加载⼤量的⾃动配置类
2.我们看我们需要的功能有没有springBoot默认写好的⾃动配置类;
3.有我们再来看看这个⾃动配置类中配置那些组件;(只要有我们要⽤的组件。我们就不需要配置了);如果没有,我们需要⾃⼰写⼀个配置类,配置相应的组件。
4.给容器中⾃动配置类添加组件时,会从properties类中获取某些属性。我们可以在配置⽂件中指定这些属性的值。
xxxxAutoConfiguration:⾃动配置类;
给容器中添加组件(配置类的属性可取的值封装在下⾯的properties类中)XXXXProperties:封装配置⽂件相关属性;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论