Spring-Boot 学习笔记
- Java 微服务实践视频教程 - Spring Boot
- Java 微服务实践 视频教程- Spring Cloud
- redis高可用视频
- jvm调优
- kubernets+docer
- jvm
- 秒杀项目实战
- Linux shell
1 Spring-Boot 介绍
1.1 什么是Spring-Boot
- Spring-Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。个人理解来说Spring-Boot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,Spring-Boot整合了其他相关联框架。
- Spring-Boot 基于Spring框架,而Spring-Cloud基于Spring-Boot,为微服务体系开发中的架构问题,提供了一整套的解决方案——服务注册与发现,服务消费,服务保护与熔断,网关,分布式调用追踪,分布式配置管理等。
- Spring-Boot 四大特性:自动配置、起步依赖、Actuator、命令行界面(CLI)
1.2 为什么要使用Spring-Boot
- 区别于Spring-Boot以前的Spring和其他框架的整合例如Mybatis,Shiro等都需要配置文件,项目中的配置文件越来越多,也越来越繁琐。项目中常常因为配置文件出错的原因,导致项目运行出错。
- 而Spring-Boot可以说就是为了解决繁杂配置而出现的解决方案。Spring-Boot理念可以理解为:约定大于配置。快速整合第三方框架,减少甚至不需要配置文件,解决了以往的Spring框架下的弊端。
- 因为配置文件少了,代码变少了,第三方框架带来的烦恼变少了,对于一个开发团队来说,更加利于开发,后期维护也更加简单。
- 要使用Spring-Cloud前应该掌握Spring-Boot
1.2.1 Spring-Boot 自动配置
传统的Spring web项目配置需要经过以下步骤:
- 1)配置web.xml,加载Spring和Spring MVC
- 2)配置数据库连接、配置Spring事务
- 3)配置加载配置文件的读取,开启注解
- 4)配置日志文件
- …
- 配置完成之后部署tomcat 调试
- …
但是针对一些单一业务需求的项目,例如该项目只是实现一个邮件收发,表格导出等单一功能,配置步骤便显得麻烦。
Spring-Boot的自动配置则能够简化很多配置,减少传统开发步骤,直接开展项目。
1.2.2 Spring-Boot 起步依赖
- Spring-Boot启动时回去导入spring-boot-autoconfigure包下META-INF/spring.factories配置文件
- 根据XxxxAutoConfiguration配置类的条件注解@Conditional判断当前环境中是否满足XxxxAutoConfiguration的注解条件,如果满足,则自动向Spring IOC 容器中注入bean
1.2.3 Spring-Boot Actuator
- Spring-Boot为了改善传统Spring应用繁杂的配置内容,采用了包扫描和自动化配置的机制,加载了原来在xml文件中的内容。自动配置有利有弊,有利的地方是让代码看上去更加简洁,反面则造成了分析应用中资源和实例的各种关系变得困难(实例创建和依赖关系等信息都被离散到了各个配置类的注解上)
度量指标类:获取应用程序运行过程中用于监控的度量指标,比如:内存信息、线程池信息、HTTP请求统计等。
操作控制类:提供了对应用的关闭等操作类功能。" title="" data-original-title=“复制”>
应用配置类:获取应用程序中加载的应用配置、环境变量、自动化配置报告等与Spring-Boot应用密切相关的配置类信息。
度量指标类:获取应用程序运行过程中用于监控的度量指标,比如:内存信息、线程池信息、HTTP请求统计等。
操作控制类:提供了对应用的关闭等操作类功能。
- Actuator这类端点的出现意义就是为了帮助我们轻松的获取一系列关于Spring 应用配置内容的详细报告,比如:自动化配置的报告、Bean创建的报告、环境属性的报告等。
- Actuator提供了以下监控方式
[外链图片转存失败(img-W0isdES0-1562239821039)(https://mp.csdn.net/img/bVbhznG)]
- Actuator 提供了 13 个接口,具体如下表所示
[外链图片转存失败(img-r3FTbTWq-1562239821040)(https://mp.csdn.net/img/bVbhznH)]
- 通过在配置文件中加入 management.security.enabled=false
例如:
[外链图片转存失败(img-lsLJhuzx-1562239821040)(https://mp.csdn.net/img/bVbhznI)]
[外链图片转存失败(img-eAZcpP8Y-1562239821041)(https://mp.csdn.net/img/bVbhznJ)]
1.2.4 Spring-Boot CLI
Spring-Boot CLI是一个命令行工具,可用于快速搭建基于Spring的原型。它支持运行Groovy脚本,这也就意味着你可以使用类似Java的语法,但不用写很多的模板代码。
- 首先下载Spring-Boot CLI
https://docs.spring.io/spring...
[外链图片转存失败(img-8FGC9PcL-1562239821042)(https://mp.csdn.net/img/bVbhznM)]
- 配置环境变量
在PATH 中配置Spring-Boot CLI文件夹下bin的路径:
D:spring-boot-cli-1.5.9.RELEASE-binspring-1.5.9.RELEASEbin
- 打开CMD查看是否安装成功
输入 spring --version (注意是--)
[外链图片转存失败(img-PD3Qsm3G-1562239821043)(https://mp.csdn.net/img/bVbhznQ)]
- 使用命令初始化项目
spring init --build=maven --java-version=1.8 --dependencies=web --packaging=jar --boot-version=1.5.9.RELEASE --groupId=com.example.demo --artifactId=javen
[外链图片转存失败(img-C5dGkESV-1562239821043)(https://mp.csdn.net/img/bVbhznW)]
--build:表示项目构建工具maven,也可以选择gradle
--java-version:表示JDK版本
--dependencies=web:表示依赖web插件
--packaging:表示打包程序方式
--boot-version:选择 spring boot的版本
--groupId:maven的groupId
--artifactId:maven的artifactId
[外链图片转存失败(img-DyNW2gzw-1562239821044)(https://mp.csdn.net/img/bVbhznX)]
将生成的javan.zip导入eclipse(STS)中即可
1.3 更简洁的报错信息
[外链图片转存失败(img-JAEo11gn-1562239821044)(https://mp.csdn.net/img/bVbhzn5)]
Spring-Boot相比于以前的控制台报错信息,更加人性化和简洁。
2 Spring-Boot 环境要求
- 默认情况下,Spring-Boot 1.3.0 Build-snapshot 需要Java 7 以及Spring框架 4.1.3或以上,如果在Java 6下使用Spring-Boot,需要添加额外的配置。
- 虽然可以在Java 6 和 java 7下使用Spring-Boot,但是官方建议在Java 8下使用Spring-Boot
- 构建环境明确支持有Maven(3.2+)和Gradle(1.12+)。
2.1 Spring-Boot 内嵌servlet 容器
Spring-Boot内嵌容器支持开箱即用(out of the box)
[外链图片转存失败(img-jqcJPEb3-1562239821045)(https://mp.csdn.net/img/bVbhzn6)]
也可以使用Spring-Boot应用部署到任何兼容Servlet 3.0+的容器。
3 创建 Spring-Boot 项目
3.1 三种创建Spring-Boot项目的方式:
- 1) 在Spring官网 http://start.spring.io/[外链图片转存失败(img-NpG1BwNR-1562239821045)(https://mp.csdn.net/img/bVbhzn7)]
进行项目名称等设置并选择版本、依赖。然后会下载这个项目的压缩文件,解压后,使用 eclipse,Import -> Existing Maven Projects -> Next ->选择解压后的文件夹-> Finsh 成功导入该项目
- 2) 使用Spring-Boot 插件,在eclipse中new一个 Spring starter project,并选择需要的依赖。(第一次构建会很慢)
- 3) 用maven构建项目
上面 1)、2)的构建方式中生成的pom.xml文件中默认有两个模块:
- spring-boot-starter :核心模块,包括自动配置支持、日志和yml;
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
- spring-boot-starter-test :测试模块,包括JUnit、Hamcrest、Mockito。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
3.2 Spring-Boot热部署:
- 只用在pom.xml里面依赖devtools即可
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</