SpringBoot学习开篇--为什么学,springBoot的特性

2018年使用springboot做了一些项目,但是发现自己仍然处于很low的水平,下定决心好好学学springBoot,第一篇文章写了WebFlux学习之旅1---函数式编程学习,考虑到之前学习的比较肤浅,打算放在SpringBoot学习之旅中慢慢完善,形成一个体系化的学习过程,OK,话不多说,记录下这几天的学习笔记:

为什么选择Springboot呢:

1.绝对的市场占有率:springboot是建立在spring框架上的,而spring框架的热门程度非常高

2.优秀的家族基因:springboot集成了spring的所有功能特性,为底层的spring framework快速搭建了应用,为高层的springCloud提供了基础设施

3.与时俱进的技术信仰:spring boot1.x,是建立在javaEE技术体系的,常见的springmvc属于servlet技术栈。数据层存储层面可以采用JDBC和JPA这样的规范操作。Spring boot2.x对于javaEE的必选项变成非必选项。spring阵营技术发展整整日上,而且最为显著的变化是编程模型的变化,其中以reactive为代表的编程范式,使用非阻塞+异步的方式,帮助程序充分的利用系统资源,提供应用伸缩性。为此Spring framework提供了一套完整的reactive技术栈,其中包括web层的webFlux,它是一种非阻塞的web框架,同时在底层的数据存储方面,spring已经提升到了相关的核心的设施,包括mongoDb、redis等数据,通过reactive实现非阻塞异步的编程方式。也是未来3-5年的技术趋势。

 

作者的学习思路:

从两个方面来学习springboot:核心技术与生态整合

核心技术:

       组件自动装配

       web应用

       springboot应用

生态整合:

       数据整合

       容器整合

       运维整合

 

思考:springBoot是如何基于Spring framework逐步走向自动装配

SpringApplication是这样掌控spring应用生命周期?

SpringBoot外部化配置与Spring Environment抽象之间是什么关系?

SpringWebMvc向Spring Reactive WebFlux过渡的真实价值和意义?

这些问题我会在后续的系列中说到,尤其是WebFlux会有一个专题

 

SpringBoot好学吗?

SpringBoot易学原因有下:

组件自动状态:规约大于配置,专注核心业务

外部化配置:一次构建、按需调配(端口等),到处运行

嵌入式容器:内置容器、无需部署,独立运行

SpringBootStarter:SpringBoot的核心,简化依赖、按需装配、自我包含

Production-Ready:一站式运维、生态无缝整合

SpringBoot难精:

组件自动装配:模式注解、@Enable模块、条件装配、加载机制

外部化配置:Environment抽象、生命抽泣、破坏性变更(1.0与2.0之间的部分不兼容)

嵌入式容器:Servlet Web容器、Reactive Web容器

SpringBoot Starter:依赖管理、装配条件、装配顺序

Production-Ready:健康检查、数据指标、@EndPoint管控

 

SpringBoot的核心特性--三大特性:

1.组件自动装配: Web MVC、Web Flux、JDBC等,组件指Web MVC  WebFlux、JDBC、事务等组件,把springFramework中的手动配置变成自动配置。解决开发效率

        1.1.如何激活自动装配呢?靠@EnableAutoConfiguration这个注解,其实我们的@SpringBootApplication已经包含了@EnableAutoConfiguration这个注解了,注解通常放在启动类的上面

        2.1.配置/META-INF/spring.factories。首先这个东西是放在很多的jar包下面。META-INF是什么意思呢?META是元的意思,META-INF是元信息的目录。spring.factories是key-value形式的。factories里面放了很多自动装备的实现类,比如:# Auto Configure

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\

org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\

org.springframework.boot.autoconfigure.aop.AopAutoConfiguration,\

org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration,\

        3.1.实现:XXXAutoConfiguration,可以参考2里面的东西

2.嵌入式Web容器:Tomcat、Jetty、Undertow。还有一种是WebFlux,它是基于Netty开发的web服务器。

3.生产准备特性:指标(CPU,内存)、健康检查(应用系统、数据库、磁盘、文件系统)、外部化配置(端口调整等等)

你可能感兴趣的:(SpringBoot)