springboot实战--笔记
由于这本书看过一遍,所以这里是二次复习,记录的东西比较少,就不分章节了。
共12章,524页,预计时间是18h
第一章 spring基础:
第二章 spring常用配置:
bean的Scope:singleton ,prototype,request,session
Spring的EL表达式和资源调用:
注入 @Value("${book.name}"),要记得配置PropertySourcesPlaceholderConfigurer
第三章 spring 高级话题 3h
spring aware : spring 提供了大量的aware接口,实现这些接口可以调用spring的服务
多线程:任务执行器 TaskExecutor,使用TreadPoolTaskExecutor可实现一个基于线程池的TaskExecutor。
配置自定义的线程池需要实现AsyncConfigurer接口。
实际上,即使不配置TreadPoolTaskExecutor,spring也会使用默认的线程池SimpleAsyncTaskExecutor
而实际开放中,任务一般是非阻碍的,即异步的,
所以我们要在配置类中通过@EnableAsync开启对异步任务的支持,并通过在实际执行的Bean的方法中使用@Async注解来声明其是一个异步任务
计划任务:在配置类添加@EnableScheduling来开启对计划任务的支持,然后在要执行计划任务的方法上注解@Scheduled
条件注解:@Conditional
在覆写matches方法时,获取判断条件如下:
获取bean():conditionContext.getBeanFactory().getBean(UserDao.class)
获取配置文件中的属性:conditionContext.getEnvironment().getProperty("app.dbType")
获取注解的属性值:metadata.getAnnotationAttributes(DatabaseType.class.getName()).get("value")
获取环境变量,包括JVM启动参数:System.getProperty("dbType")
组合注解和元注解:元注解就是可以注解到别的注解上的注解,被注解的注解称之为组合注解,组合注解具备元注解的功能。
@Enable*注解的工作原理:通过@Import注解来添加配置,包括直接添加,选择添加,动态注册等方式,主要区别是配置类继承的接口不同
测试:这个内容很多,也很重要,这里讲的太简略,另开一篇详解。
第四章 spring mvc基础 1h
拦截器:普通的bean实现HanlderInterceptor接口,
mvc配置要继承WebMvcConfigurer,这里可注册上面实现的拦截器
@ControllerAdvice, 可以统一处理注解了@Controller或RequestMapping的类的共性问题,比如@ExceptionHandler,@InitBinder,@ModelAttribute
HttpMessageConverter:默认使用jackson,没有jackson则用gson。也可以自己配置,新增自定义的HttpMessageConverter即可
。
服务器端推送技术:ajax,SSE,WebSocket
Servlet3.0+异步方法支持:这个没看明白
spring MVC的测试: 这个很重要
第五章 spring boot 基础 1h
spring boot 可以通过 java -jar xx.jar 来运行
可内嵌Tomcat、Jetty或者Undertow
spring boot会根据类路径中的jar包、类,为jar包里的类自动配置Bean,这样会极大的减少我们要使用的配置。
提供基于http、ssh、telnet对运行时的项目进行监控
spring boot 快速搭建 https://start.spring.io/
spring boot CLI :spring boot 提供的控制台命令工具
第六章 spring boot 核心 3h
@SpringBootApplication是一个组合注解,内部有自动配置的相关注解
类上添加@ConfigurationProperties(prefix = "spring.data"),可以自动把值注入到同名的属性里
运行原理:@EnableAutoConfiguration,该注解里有@AutoConfigurationPackages和EnableAutoConfigurationImportSelector,分布配置包名和类名
其中,EnableAutoConfigurationImportSelector的原理是:
获取所有的包里的"META-INF/spring-autoconfigure-metadata.properties"文件构建一个Properties,并将Properties包装成AutoConfigurationMetadata。
获取所有包里的"META-INF/spring.factories"文件并从中取出所有org.springframework.boot.autoconfigure.EnableAutoConfiguration的值(这些值都是自动配置类)放入List<String> configurations中。
从项目注解@EnableAutoConfiguration中找出自动配置的排除项目,验证该项目是否可排除,如果不可排除则报异常。从configurations中删除排除的项目。
根据META-INF/spring-autoconfigure-metadata.properties,使用OnClassCondition方法过滤configurations的值,
过滤的方法是:configurations的值加上".ConditionalOnClass"作为key,从spring-autoconfigure-metadata.properties获取值,这个值是个类名,
验证这个类是否存在,如果不存在,则打印消息并跳过该自动配置。
目前迷惑的地方是,EnableAutoConfigurationImportSelector什么时候调用,目前打断点显示不调用。
@ConditionalOnClass,@ConditionalOnBean等注解是public的,项目中可以直接使用
实战:自己搭建一个自动配置:待看
第七章 spring boot 的web开发
Thymeleaf 是spring boot推荐使用的模板引擎,可自动配置,默认目录是/templates/,默认后缀是.html
Web相关配置
访问静态资源和静态首页
webMVC的自定义配置:可以继承 WebMvcConfigurerAdapter类或者实现WebMvcConfigurer接口,记得加@Configuration注解
注册Servlet、Filter、Listener、Interceptor
Tomcat配置
springboot默认的是tomcat配置,配置类是ServletWebServerFactoryAutoConfiguration
这本书里的关于代码配置tomcat部分过时了,相关的类已经被移除。
如果要把tomcat替换成Underbow为servlet容器,只需要修改spring-boot-starter-web的依赖即可(排除tomcat依赖并添加Underbow依赖)
SSL配置:待看
WebSocket配置:待看
基于Bootstrap和AngularJS的Web应用
第八章 spring boot 的数据访问
引入Docker
docker常用命令
docker search 镜像名
docker pull 镜像名
docker rmi image-id
docker rmi $(docker images -q) //删除所有镜像
docker run -d --name 容器名 镜像名 //-d指的是后台运行
docker run -d -p 本机端口:容器端口 --name port-redis redis //端口映射:
docker rmi $(docker ps -a -q) //删除所有容器
docker logs 容器名/容器id //查看容器日志
docker exec -it 容器id/容器名 bash //登陆容器
第九章 springboot 企业级开发 1h
第十章 springboot 开发部署与测试 2h
十一章 应用监控 1h
十二章 分布式系统开发 2h
springboot实战--笔记的更多相关文章
- SpringBoot学习笔记:Swagger实现文档管理
SpringBoot学习笔记:Swagger实现文档管理 Swagger Swagger是一个规范且完整的框架,用于生成.描述.调用和可视化RESTful风格的Web服务.Swagger的目标是对RE ...
- Tars | 第0篇 腾讯犀牛鸟开源人才培养计划Tars实战笔记目录
腾讯犀牛鸟开源人才培养计划Tars实战笔记目录 前言 在2021年夏,笔者参加了腾讯首届开源人才培养计划的Tars项目,负责Subset流量管理规则的Java语言JDK实现.其中写作几篇开源实战笔记, ...
- mysql颠覆实战笔记(五)--商品系统设计(二):定时更新商品总点击量
继续回到沈老师的MYSQL颠覆实战,首先回顾下上一节课的内容,请大家会看下上节课写的存储过程. 打开prod_clicklog表, 我们只要把日期(不含时分秒)的部分存在数据库中, 如果同一日期有相同 ...
- mysql颠覆实战笔记(四)--商品系统设计(一):商品主表设计
版权声明:笔记整理者亡命小卒热爱自由,崇尚分享.但是本笔记源自www.jtthink.com(程序员在囧途)沈逸老师的<web级mysql颠覆实战课程 >.如需转载请尊重老师劳动,保留沈逸 ...
- mysql颠覆实战笔记(一)--设计一个项目需求,灌入一万数据先
版权声明:笔记整理者亡命小卒热爱自由,崇尚分享.但是本笔记源自www.jtthink.com(程序员在囧途)沈逸老师的<web级mysql颠覆实战课程 >.如需转载请尊重老师劳动,保留沈逸 ...
- mysql颠覆实战笔记(七)--白话理解事务
今天我们学习web开发级mysql颠覆实战课程第9课没MYSQL事务(一):白话理解事务.前面有两节课第7讲:商品系统设计(四):商品属性设计之自定义属性,第8讲:商品系统设计(五):一维属性的商品价 ...
- mysql颠覆实战笔记(六)--商品系统设计(三):商品属性设计之固定属性
今天我们来讲一下商品属性 我们知道,不同类别的商品属性是不同的. 我们先建一个表prod_class_attr:
- mysql颠覆实战笔记(三)-- 用户登录(二):保存用户操作日志的方法
版权声明:笔记整理者亡命小卒热爱自由,崇尚分享.但是本笔记源自www.jtthink.com(程序员在囧途)沈逸老师的<web级mysql颠覆实战课程 >.如需转载请尊重老师劳动,保留沈逸 ...
- mysql颠覆实战笔记(二)-- 用户登录(一):唯一索引的妙用
版权声明:笔记整理者亡命小卒热爱自由,崇尚分享.但是本笔记源自www.jtthink.com(程序员在囧途)沈逸老师的<web级mysql颠覆实战课程 >.如需转载请尊重老师劳动,保留沈逸 ...
随机推荐
- Python 使用cx_freeze 生成exe文件
在python中比较常用的python转exe方法有三种,分别是cx_freeze,py2exe,PyInstaller.py2exe恐怕是三者里面知名度最高的一个,但是同时相对来说它的打包质量恐怕也 ...
- 【NOIP2016练习】T2 跑跑步 (数论)
: 这场的难度是从高到低的 ..]of longint; n,m,i,ans:longint; function gcd(x,y:longint):longint; var r:longint; be ...
- CSS3 动画卡顿性能优化解决方案--摘抄
最近在开发小程序,与vue类似,它们都有生命周期这回事. onLoad 监听页面加载 onReady 监听页面初次渲染完成 onShow 监听页面显示 到底是什么意思? 所以这又触碰到了我的知识盲区, ...
- 标准C程序设计七---54
Linux应用 编程深入 语言编程 标准C程序设计七---经典C11程序设计 以下内容为阅读: <标准C程序设计>(第7版) 作者 ...
- 共享内存之——mmap内存映射
共享内存允许两个或多个进程共享一给定的存储区,因为数据不需要来回复制,所以是最快的一种进程间通信机制.共享内存可以通过mmap()映射普通文件 (特殊情况下还可以采用匿名映射)机制实现,也可以通过sy ...
- LeetCode OJ——Convert Sorted Array to Binary Search Tree
http://oj.leetcode.com/problems/convert-sorted-array-to-binary-search-tree/ 将一个升序的数组转换成 height balan ...
- AC日记——[SDOI2015]星际战争 洛谷 P3324
题目描述 3333年,在银河系的某星球上,X军团和Y军团正在激烈地作战. 在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进攻X军团的阵地,其中第i个巨型机器人的装甲值为Ai.当一个巨型机器人的装甲值 ...
- [原创][FPGA][IP-Core]altlvds_tx & altlvds_rx
1. 概述 Alter公司的QuartusII软件提供了LVDS发送和接收的IP核供我们使用,其在本质上可以理解为并行-串行数据的转换器.其在官方文档(见附件)上也这样说过.其中的应用场景有告诉AD/ ...
- ios- nil NULL 和 NSNull
因为objective-c的集合对象,比如nsarray, nsdictionary, nsset等,都有可能包含nsnull对象,所以,如果以下代码中的item为nsnull,则会引起程序崩溃. N ...
- 10.【nuxt起步】-引用mintui
这时候我们完成了list.vue,但是怎么返回index.vue,这时候需要这个头部返回 1.我们使用现成的minu-ui,eleme的开源移动端 ,参考 https://www.cnblogs.co ...