读书笔记:Spring boot实战
第一章 入门
Spring boot最重要的四个核心 :
1.自动配置:针对很多spring应用程序常见的应用功能,spring boot能自动提供相关配置
2.起步依赖:告诉spring boot需要什么功能,它就能引入需要的库
3.命令行界面:这是spring boot的可靠特性,借此你只需写能完成完整的应用程序,无需要传统项目的构建。
4.Acuator:让你能够深入运行中的spring boot应用程序,一探究竟。
第二章 开发第一个应用程序
一个最快的搭建项目的方法,从技术角度看,用spring mvc来处理web请求,用thymeleaf来定义web视图,用spring data jpa来把持久化到数据库里,数据库可以用嵌入式的h2数据库。
@springbootApplication开启了spring的组件扫描和spring boot的自动配置功能。实际上它将三个有用的注解组合在了一起:
1)@Configuration:标明该类使用spring基于java的配置。
2)@ComponentScan:启用组件扫描,这样你写的web控制器类和其他组件才能被自动发现并注册为spring应用程序上下文里的bean.
3) @EnableAutoConfiguration:就是这一行开启了spring boot自动配置的魔力,让你不用再写成篇的配置了。
构建插件maven或gradle的主要功能就是把项目打包成一个可执行的超级jar,包括把应用程序的所有依赖打入jar文件内,并为jar添加一个描述文件,其中的内容能让你用java -jar来运行程序。
使用maven时将spring-boot-starter-parent作为上一级,这样一来就能利用maven的依赖管理功能,继承很多常用 库的依赖版本,在你声明依赖时就不用再云指定版本号了。gradle没有这样的功能
在maven里可以用<exclusions>元素来排除传递依赖。
在向应用程序加入spring boot时,有个名为spring-boot-autoconfigure的jar文件,其中包含了很多配置类。每个配置类都在应用程序的classpath里,都有机会为应用程序的配置添砖加瓦。所有这些配置与从不同原因在于它们利用了spring的条件化配置。这是spring4.0引入的新特性。条件化配置允许配置存在于应用程序中,但在满足某些特定条件之前都忽略这个配置。
第三章 自定义配置
覆盖自动配置很简单,就当自动配置不存在,直接显式地写一段配置。
spring boot的设计 是加载应用级配置,随后再考虑自动配置类。因此,如果你已经配置了一个jdbctemplate bean,那么在执行自动 配置时就已经存在一个jdbctemplate类型的bean了,于是忽略自动配置的jdbctemplate bean。
为了微调一些细节,比如改改端口号和日志级别,可以配置个一个属性就可以,可以在命令行参数里指定,要以是配置文件application.properties中,可以通过环境变量修改。
这里要注意,如果采用环境变量的话,不是使用-,要使用_,这是对环境变量名称的要求。
可以使用Bean里通过@ConfigurationProperties注解加载配置文件的属性配置。
当应用程序部署到不同的运行环境中,一些配置细节通常会有不同,spring从3.1开始支持基于profile的配置,profile是一种条件化配置,基于运行时激活的profile,会使用或忽略不同的bean或配置类。可以以下几种形式的profile文件:
1. application-{profile}.properties. 2,在一个yml文件中使用---分隔profile配置
定制应用程序错误页面:如果配置了thymeleaf,则有名为error.html的thymeleaf模板。
第四章 测试
spring在进行集成测试时,遵照生产环境来组装测试目标bean是非常重要的,它提供了额外的辅助功能,比如组件扫描,自动植入和声明性切面(缓存,事务,安全)。你要把这些活都干了,基本也就是把spring再造了一次。 spring从1.1.1就向集成测试提供了极佳的支持,从2.5开始,集成测试支持的形式就变成了springjunit4classrunner,这是一个junit类运行器,会为junit测试加载spring应用程序上下文,并为测试类自动植入所需的bean.
测试web应用程序有2个可选方案:
1.spring mock mvc: 能在一近似真实的模拟servlet容器里测试控制器,而不用实际启动应用服务器。
2 web集成测试。在嵌入式servlet容器里启动应用程序,在真正的应用服务器里执行测试。
让Spring Boot在随机选择的端口上启动服务器很方便。一种办法是将 server.port属性设置为0,让Spring Boot选择一个随机的可用端口
第五章 groovy与spring boot cli
第六章 在spring boot中使用grails
第七章 深入actuator
Spring Boot的Actuator提供了很多生产特性,比如监控和度量应用程序。这些特性可以通过REST端点、远程shell和JMX获得。
Spring Actuator提供了13个REST端点:/autoconfig,/configprops,/beans,/dump,/env,/env/{name} ,/health,/info,/mappings,/metrics,/metrics/{name},/shutdown,/trace:
ID 路径 请求方式 说明
1 /autoconfig GET 自动配置报告,记录哪些自动配置条件是否通过
2 /configprops GET 描述配置属性(包括默认值)如何注入的
3 /beans GET 描述上下文所有bean,以及它们之间的关系
4 /dump GET 获取线程活动快照
5 /env GET 获取全部环境属性
6 /env/{name} GET 获取特点环境属性
7 /health GET 应用程序健康指标,由HealthIndicator的实现类提供
8 /info GET 获取应用程序定制信息,这些信息有info打头的属性提供
9 /mappings GET 描述全部URL路径,及它们和控制器(包括Actuator端点)的映射关系
10 /metrics GET 报告各种应用程序度量信息,比如内存用量和http请求计算
11 /metrics/{name} GET 报告指定名称的应用程序度量值
12 /shutdown GET 关闭应用程序,要求endpoints.shutdown.enabled设值为true
13 /trace GET 提供基本的HTTP请求跟踪信息,时间戳,HTTP头等
要启用Actuator的端点,只需在项目中引入Actuator的起步依赖即可
应用程序度量报告
/metrics端点为我们提供了应用程序运行时的一些情况,比如内存、线程、类加载数量等等的计数和度量情况
报告片段
{
"mem": 379698,//系统分配的内存(k)
"mem.free": 204406,//空闲内存(k)
"processors": 8,//处理器数量
"instance.uptime": 95093826,//实例运行时间(ms)
"uptime": 95110093,//正常运行时间(ms)
"systemload.average": -1,//平均负载
"heap.committed": 316416,
"heap.init": 131072,
"heap.used": 112009,
"heap": 1837056,//堆内存(k)
"nonheap.committed": 64592,
"nonheap.init": 2496,
"nonheap.used": 63283,
"nonheap": 0,//非堆内存(k)
"threads.peak": 60,//线程峰值
"threads.daemon": 40,//精灵线程
"threads.totalStarted": 94,
"threads": 44,
"classes": 8524,
"classes.loaded": 8524,//类加载器加载数量
"classes.unloaded": 0,
"gc.ps_scavenge.count": 11,//垃圾收集次数
"gc.ps_scavenge.time": 105,//垃圾收集总时间ms
"gc.ps_marksweep.count": 2,//标记垃圾收集器次数
"gc.ps_marksweep.time": 150,//标记垃圾收集齐所花事件
"httpsessions.max": -1,
"httpsessions.active": 1,
"datasource.primary.active": 0,
"datasource.primary.usage": 0,
"gauge.response.sign_in": 11,
"gauge.response.root": 179,
"gauge.response.star-star": 3,
"counter.status.200.root": 11,
"counter.status.200.star-star": 33,//返回状态为200的请求数
"counter.status.404.star-star": 12,
"counter.status.200.sign_in": 1//sign_in端点请求,状态为200的次数
......
可以将报告提供的信息分为以下几类
ID 分类 前缀 报告内容
1 垃圾收集器 gc.* 详见报告注释
2 内存 mem.* 详见报告注释
3 堆 heap.* 堆内存使用情况
4 类加载器 classes.* JVM类的加载与卸载的数量
5 系统 processors,uptime,
instance.uptime,
systemload.average 系统信息,堆内存使用情况
6 线程池 threads.* 线程、守护线程的数量,以及线程数最大峰值
7 数据源 datasource.* 数据源链接的数量,仅Spring上下文里存在DataSource Bean的时候才会有该信息
8 Tomcat会话 httpsessions.* tomcat活跃会话数和最大会话数,该度量指标信息仅在引入了嵌入式Tomcat作为应用容器的时候才会提供。
9 HTTP counter.status.,
gauge.response. 服务HTTP请求的度量值域计数器
如果只想知道某一个属性信息的情况,可以直接指定属性/metrics/{name}(name为指定的属性名)。
如想知道垃圾收集次数,那么可以如下方式访问
http://127.0.0.1:54001/manager/metrics/gc.ps_scavenge.count,则只会返回指定属性的结果。
虽然Actuator提供了很多运行中Spring Boot应用程序的内部工作细节,但难免和你的需求有 所偏差。也许你并不需要它提供的所有功能,想要关闭一些也说不定。或者,你需要对Actuator 稍作扩展,增加一些自定义的度量信息,以满足你对应用程序的需求。 实际上,Actuator有多种定制方式,包括以下五项。
重命名端点。 启用和禁用端点。 自定义度量信息。 创建自定义仓库来存储跟踪数据。 插入自定义的健康指示器。
第8章 部署spring boot应用程序
可以通过修改程序,将spring boot生成的jar包 改成war包,这样就即可以把这个War包放在tomcat里执行,也可以java -jar **.war。
Spring Boot应用程序的构建说明经常会配置为生成可执行的JAR文件。我们也看到了如何对 构建进行微调,如何编写一个SpringBootServletInitializer实现,生成WAR文件,以便 部署到应用服务器上。 随后,我们进一步了解了如何将应用程序部署到Cloud Foundry上。Cloud Foundry非常灵活, 能够接受各种形式的Spring Boot应用程序,包括可执行JAR文件、传统WAR文件,甚至还包括原 始的Spring Boot CLI Groovy脚本。我们还了解了Cloud Foundry如何自动将内嵌式数据源替换为绑 定到应用程序上的数据库服务。
读书笔记:Spring boot实战的更多相关文章
- 《spring boot 实战》读书笔记
前言:虽然已经用spring boot开发过一套系统,但是之前都是拿来主义,没有系统的,全面的了解过这套框架.现在通过学习<spring boot实战>这本书,希望温故知新.顺便实现自己的 ...
- 《Spring Boot实战》笔记(目录)
目录 目 录第一部分 点睛Spring 4.x第1 章 Spring 基础 .............................................................. ...
- (转) Spring读书笔记-----Spring的Bean之配置依赖
前一篇博客介绍了Spring中的Bean的基本概念和作用域(Spring读书笔记-----Spring的Bean之Bean的基本概念),现在介绍Spring Bean的基本配置. 从开始我们知道Jav ...
- Spring Cloud学习笔记--Spring Boot初次搭建
1. Spring Boot简介 初次接触Spring的时候,我感觉这是一个很难接触的框架,因为其庞杂的配置文件,我最不喜欢的就是xml文件,这种文件的可读性很不好.所以很久以来我的Spring学习都 ...
- 【读书笔记《Bootstrap 实战》】6.单页营销网站
我们已经掌握了很多实用 Bootstrap 的重要技能.现在,是时候拿出更多的创意来帮助客户实现他们全方位在线营销的愿望了.此次将带领大家做一个漂亮的单页高端营销网站. 主要任务如下: □ 一个大型 ...
- spring boot实战(第十三篇)自动配置原理分析
前言 spring Boot中引入了自动配置,让开发者利用起来更加的简便.快捷,本篇讲利用RabbitMQ的自动配置为例讲分析下Spring Boot中的自动配置原理. 在上一篇末尾讲述了Spring ...
- spring boot实战(第十二篇)整合RabbitMQ
前言 最近几篇文章将围绕消息中间件RabbitMQ展开,对于RabbitMQ基本概念这里不阐述,主要讲解RabbitMQ的基本用法.Java客户端API介绍.spring Boot与RabbitMQ整 ...
- Spring Boot实战系列-----------邮件发送
快速导航 添加Maven依赖 配置文件增加邮箱相关配置 Service.Test项目代码构建 五种邮件发送类型讲解 文本邮件 html邮件 附件邮件 html内嵌图片邮件 模板邮件 问题汇总 添加ma ...
- Spring Boot 实战与原理分析视频课程
Spring Boot 实战与原理分析视频课程 链接:https://pan.baidu.com/share/init?surl=PeykcoeqZtd1d9lN9V_F-A 提取码: 关注公众号[G ...
- spring boot实战(第一篇)第一个案例
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] spring boot实战(第一篇)第一个案例 前言 写在前面的话 一直想将spring boot相关内容写成一个系列的 ...
随机推荐
- Jquery WeUI(一)
用于微信端的控件UI , 首先,需要做的是开发一个微信能访问的网页,并和微信关联 A. 创建一个空网站 B. 增加一般处理程序 A. 增加 web 网页 和空文件到项目中 B. 申请和配置测试服务 创 ...
- spring 装配集合
1:创建pojo,属性包含集合,集合元素为基本类型 package com.liyafei.pojo; import java.util.List; import java.util.Map; imp ...
- 输出log到指定文件
0:pom.xml中添加依赖 <!--log4j--> <!--有错误时,可能版本不对,或者依赖没有加全 'org.apache.logging.log4j:log4j-core:2 ...
- PHPExcel 基本用法详解
.header header("Content-Type:application/vnd.ms-excel"); header("Content-Disposition: ...
- [LeetCode] 345. Reverse Vowels of a String_Easy tag:Two Pointers
Write a function that takes a string as input and reverse only the vowels of a string. Example 1: In ...
- python学习第一次
一,安装python 官网下载地址:https://www.python.org/downloads/windows/ 我下载的是最新的: Download Windows x86 web-based ...
- Java面向对象---接口
接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过继承接口的方式,从而来继承接口的抽象方法. 接口并不是类,编写接口 ...
- oracle用户名和密码到期后如何处理
原因:确定是由于Oracle11g中默认在default概要文件中设置了“PASSWORD_LIFE_TIME=180天”所导致. 影响: 1.密码过期后,业务进程连接数据库异常,影响业务使用. 2. ...
- 一起来全面解析5G网络领域最关键的十大技术
提到5G,很多人的第一印象就是它的网络速度快.延时性低.带宽大,没错,这就是5G时代的特点!5G作为第五代移动通信网络,其峰值理论传输速度可达每秒数十Gb,这比4G网络的传输速度快数百倍,整部超高画质 ...
- 循环ajax请求问题
项目开发过程碰到过这种需求:需要循环发送ajax请求,请求参数和循环索引有关.第一次实现的时候用了类似下面的方法,结果发现发送到后端的参数数据都是最后一次循环的索引 for(var i=0; i< ...