SpringBoot简介
微服务阶段
javase:OOP
mysql:数据持久化
html+css+js+jQuery+框架:视图,框架不熟练,css不好;
javaweb:独立开发MVC三层架构的网站;原始
ssm:框架:简化了我们的开发流程,配置开始较为复杂
jar:tomcat运行
spring再简化:SpringBoot.jar:内嵌tomcat;微服务架构!
springcloud:服务越来越多;
SpringBoot简介
spring是为了解决企业级应用开发的复杂性而创建的,简化开发。
4种关键策略:
- 基于POJO的轻量级和最小侵入性编程;
- 通过IOC,依赖注入(DI)和面向接口实现松耦合
- 基于切面(AOP)和惯例进行声明式编程;
- 通过切面和模板减少样式代码
SpringBoot基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。
SpringBoot所具备的特征有:
- 可以创建独立的Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs;
- 内嵌Tomcat或Jetty等Servlet容器;
- 提供自动配置的“starter”项目对象模型(POMS)以简化Maven配置;
- 尽可能自动配置Spring容器;
- 提供准备好的特性,如指标、健康检查和外部化配置;
- 绝对没有代码生成,不需要XML配置。
SpringBoot框架中还有两个非常重要的策略:开箱即用和约定优于配置。
什么是微服务架构
微服务是一种架构风格,它要求我们在开发一个应该的时候,这个应用必须构建成一系列小服务的组合;可以通过http的方式进行互通。
微服务架构打破了all in one的方式,把每个功能元素独立出来。把独立出来的功能元素动态组合,需要的元素才拿来组合,也以整合多个功能元素。微服务架构是对功能元素进行复制,而没有对整个应用进行复制。
这样做的好处在于:
- 节省了调用资源
- 每个功能元素的服务都是可替换的,可独立升级的软件代码
SpringBoot搭建
第一个SpringBoot程序
使用 IDEA 直接创建项目
- 创建一个新项目
- 选择spring initalizr , 可以看到默认就是去官网的快速构建工具那里实现
- 填写项目信息
- 选择初始化的组件(初学勾选 Web 即可)
- 填写项目路径
- 等待项目构建成功
编写一个http接口
-
在主程序的同级目录下,新建一个controller包,一定要在同级目录下,否则识别不到
-
在包中新建一个HelloController类
@RestController
public class HelloWord {
@RequestMapping("/helloword")
public String helloword()
{
return ("<h1>hello world</h1>");
}
}
3、编写完毕后,从主程序启动项目,浏览器发起请求,看页面返回;控制台输出了 Tomcat 访问的端口号!
简单几步,就完成了一个web接口的开发,SpringBoot就是这么简单。所以我们常用它来建立我们的微服务项目!
SpringBoot原理
自动装配
pom.xml
- spring-boot-dependencies:核心依赖在父工程中
- 在写或是引入一些SpringBoot依赖的时候,不需要指定版本,因为有这些版本仓库
启动器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
说白了就是Springboot的启动场景;
比如spring-boot-starter-web,它会自动帮我们导入web环境的所有依赖!
springboot会将所有的功能场景,变成一个个的启动器。
主程序启动器
@SpringBootApplication:标注这个类是一个springboot的应用,启动类的下的所有资源被导入
@SpringBootConfiguration:springboot的配置
@Configuration:spring配置类
@Component:说明这也是一个spring的组件
@EnableAutoConfiguration:自动配置
@AutoConfigurationPackage:自动配置包
@Import({Registrar.class}):导入包注册器
@Import({AutoConfigurationImportSelector.class}):自动配置导入选择
未完...
-
SpringBoot在启动的时候从类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值
-
将这些值作为自动配置类导入容器 , 自动配置类就生效 , 帮我们进行自动配置工作;
-
整个J2EE的整体解决方案和自动配置都在springboot-autoconfigure的jar包中;
-
它会给容器中导入非常多的自动配置类 (xxxAutoConfiguration), 就是给容器中导入这个场景需要的所有组件 , 并配置好这些组件 ;
-
有了自动配置类 , 免去了我们手动编写配置注入功能组件等的工作;