读书笔记: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相关内容写成一个系列的 ...
随机推荐
- 安装HDF5及在VS下配置HDF5
最近要用到HDF5来存储数据,想要安装尝试用一下.发现网上有两种安装方式,一种是obtain518.html:获取最新的HDF5-1.8软件;另一种是cmakebuild518.html:使用CMAK ...
- mac shell终端编辑命令行快捷键
Ctrl + d 删除一个字符,相当于通常的Delete键(命令行若无所有字符,则相当于exit:处理多行标准输入时也表示eof) Ctrl + h 退格删除一个字符,相当 ...
- makefile 中wildcard
在Makefile规则中,通配符会被自动展开.但在变量的定义和函数引用时,通配符将失效.这种情况下如果需要通配符有效,就需要使用函数“wildcard”,它的用法是:$(wildcard PATTER ...
- jenkins 项目发布脚本
构建shell #!/bin/bash ########################################################################## 编译部分 ...
- 2018-2019-2 网络对抗技术 20165324 Exp1:PC平台逆向破解
2018-2019-2 网络对抗技术 20165324 Exp1:PC平台逆向破解 实验: 要求: 掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码(0.5分) 掌握反汇编与十六进制编 ...
- Set keys=Map.keyset()
目前只有Map和Properties要用到keyset()方法 Properties:指JDBC时候的连接数据库,把数据库的参数提取到配置文件时用到, 通俗的讲,Properties专门用来读取配置文 ...
- Leetcode: Pow(x, n) and Summary: 负数补码总结
Implement pow(x, n). Analysis: Time Complexity: O(LogN) Iterative code: refer to https://discuss.le ...
- java反射之根据全类名创建对象
现在的需求是根据类的全名.来创建对象 package 中介者设计模式; import java.util.Date; public class CreateObject { public static ...
- js自执行函数的常见写法
js自执行函数的常见写法 2016-12-20 20:02:26 1.关于自执行函数 1.1 写自执行函数的好处:独立的作用域,不会污染全局环境 (function() { })(); 1.2 理解重 ...
- Junit4用法
序号 方法和描述 1 void assertEquals(boolean expected, boolean actual) 检查两个变量或者等式是否平衡 2 void assertTrue(bool ...