《spring boot实战》读书笔记

《spring boot实战》 【美】Craig Walls 著;丁雪丰 译

一、入门

spring boot四个核心:

自动配置:针对spring应用程序常见的些应用功能,spring boot能够自动提供相关配置;

起步依赖:利用了传递依赖解析,把常用的库聚合在一起,组成了几个为特定功能而定制的依赖。(**-starter)

命令行界面:去除代码噪音(import, getter,setter等)

Actuator:提供在运行时检视应用程序内部情况的能力;

二、spring boot应用程序

@SpringBootApplication注解将三个有用的注解组合在一起:

@Configuration, @ComponentScan, @EnableAutoConfiguration

三、自定义配置

两种影响自动配置的方式:使用显示配置进行覆盖和使用属性进行精细化配置;

显示配置:想要覆盖spring boot的自动配置,你所要做的仅仅是编写一个显示的配置。Spring boot会发现你的配置,随后降低自动配置的优先级,以你的配置为准。

Spring boot的设计师加载应用级配置,随后再考虑自动配置类。 自动配置类上有可能加@ConditionalOnMissingBean注解, 比如jdbcTemplate, 要求当前不存在JdbcOperations bean时才生效,如果应用级配置已经有了jdbcTempalte了,那么就不再执行了。

通过属性文件外置配置:spring boot能从多种属性源获取属性, 优先级顺序依次为:

1)命令行参数

2)java:comp/env里的JNDI属性

3)JVM系统属性

4)操作系统环境变量

5)随机生成的带random.*前缀的属性(在设置其他属性时可以引用它们,比如${random.long})

6)应用程序以外的application.properties等文件

7)打包在应用程序的application.properties等文件

8)通过@PropertySource标注的属性源

9)默认属性

高优先级属性源里设置的属性会覆盖低优先级的相同属性;

默认情况下,日志文件的大小达到10mb时会切分一次;

spring boot自动配置的默认错误处理器会查找名为error的视图,如果找不到就用默认的白标视图;

四、测试

@SpringApplicationConfiguration

测试http请求:Spring Mock MVC: MockMvcBuilders

@WebIntegrationTest

使用Selenium测试Html页面;

五、Grovy与Spring Boot CLI

通过Groovy消除代码噪声, 不需要public,private等限定符; 行尾分号; getter、setter等;

@Grab注解会告诉Groovy在启动应用程序时自动获取一些依赖的库;

Spring Boot CLI的技能:

cli可以利用spring boot的自动配置和起步依赖;

cli可以检测使用的类,自动解析合适的依赖库来支持那些类;

cli知道多数常用类在哪些包里,如果用到了这些类,它会把这些包加入Groovy的默认包里;

cli如果检测到当前运行的是个web程序,会自动引入嵌入式web容器(默认tomcat)供程序使用;

覆盖默认依赖版本:@GrabMetadata

添加依赖仓库:默认情况下,@Grab声明的依赖是从Maven中心仓库拉取的。此外,Spring Boot还注册了spring的里程碑及快照仓库,以便获取spring项目的预发布版本依赖。

@GrabResolver注解:指定额外的仓库。

六、在Spring Boot中使用Grails

GORM: @Entity注解让实体类变成GORM, GORM的工作原理要求实体类必须用Groovy来编写;可直接通过实体类进行持久化操作; ·

GSP: Groovy SServer Pages 将模型数据以html的形式呈现给浏览器; 必须要放一个隐藏域,其中包含CSRF令牌,spring boot security在提交post请求时要求带这个令牌,htymeleaf在呈现html时会自动包含这个令牌,但是GSP里必须在隐藏域显示的包含它;

创建新的grails项目:grails create-app **

运行应用程序:grails run-app **

七、深入Actuator

spring-boot-starter-actuator

端点可以分为三大类:配置端点、度量端点和其他端点;

配置端点:

/beans 获得bean装配报告:bean, resource, dependencies, scope, type;

/autoconfig 详解自动配置:positiveMatches, condition, message, negativeMatches;

/env 查看配置属性:/env会生成应用程序可用的所有环境属性的列表,无论这些属性是否用到。带有password、secret、key的属性会加上**

运行时度量:

/metrics :垃圾收集计数、内存使用和空闲数量、堆、类加载器、系统(处理器数量、运行时间、平均负载)、线程池、数据源、tomcat回话、http计数;

/trace 追踪web请求: timestamp, method, path,

/dump 生成当前线程活动的快照;

/health 监控应用程序健康情况:diskspace, db, redis, rebbit

其他:

/shutdown 关闭应用程序, 这个端点默认是不启用的, 可以endpoints.shutdown.enabled=true将其打开;

/info 获取应用信息;

连接actuator的远程shell: spring-boot-starter-remote-shell, 用户名、密码、端口号;

通过JMX监控应用程序;

定制Actuator:

重命名端点: endpoints.endpointId.id=**

启用或禁用端点:endpoints.endPointId.enabled=true/false

禁用全部端点:endpoints.enabled=false;

如果想只打开一两个端点, 就可以使用禁用全部,再启用想要的那一两个;

添加自定义度量信息:CountService计数器接口;GaugeService 添加度量值;

创建自定义跟踪仓库:/trace端点报告的跟踪信息都存储在内存仓库里,默认100个条目; InMemoryTraceRepository Bean调整trace条目等信息;

插入自定义健康指示器:HealthIndicator接口

保护Actuator端点:SecurityConfig

发布了250 篇原创文章 · 获赞 269 · 访问量 32万+

猜你喜欢

转载自blog.csdn.net/kangbin825/article/details/105346029