《spring boot 实战》读书笔记
前言:虽然已经用spring boot开发过一套系统,但是之前都是拿来主义,没有系统的,全面的了解过这套框架。现在通过学习《spring boot实战》这本书,希望温故知新。顺便实现自己的spring cloud代码模板和练习Sping cloud 2.0框架的使用
一、spring基础
1.声明Bean的注解:
@Component:组件,没有明确的角色
@Service:业务逻辑层使用
@Respository:dao层使用
@Controller:表现层使用
2.注入Bean的注解:
@Autowired:spring提供的注解
@Inject和@Resource:java标准提供
3.配置类注解:
@Configuration:声明配置类
@ComponentScan:扫描指定路径下的Bean
4.java配置:
@Configuration:声明配置类
@Bean:注解在方法上,当前方法的返回值,声明为一个bean
5.关于注解配置和java配置:全局配置(如数据库、MVC的相关配置)使用java配置,业务场景下的bean,直接使用注解配置(@Service、@Component...)
6.常见的AOP技术有两个,分别是Filter和代理模式(也可以称为过滤器和拦截器),Filter是基于回调函数(请看《Java回调机制解析》),代理模式是基于Java反射技术,代理模式又分为静态代理和动态代理,动态代理就是拦截器的简单实现。(过滤器和拦截器的区别可参见《过滤器和拦截器的区别》)
7.spring内部提供了Bean之间的消息通信机制:application event
二、spring高级话题
1.spring aware: spring框架中有很多xxxAware的接口,提供了spring容器的服务。比如ResourceLocaderAware提供了对资源加载的服务。
2.多线程:通过TaskExecutor这个执行器来实现并发任务,它的一个实现ThreadPoolTaskExecutor是基于线程池实现的。
@EnableAsync:开启对异步任务的支持
@Async:声明是一个异步任务
3.计划任务:
@EnableScheduling:开启对计划任务的支持
@Scheduled:声明是一个计划任务,可以支持多种类型的计划(cron\fixDelay\fixRate)
4.条件注解:根据自定义的条件,生成bean
@Conditional
5.组合注解与元注解:可以使用组合注解来代替多个元注解来使用
6.@Enable*注解的工作原理:直接导入配置、依据条件选择配置类、动态注册Bean
7.测试:测试框架(spring-test)
三、 Sping MVC
1.MVC:Model+View+Controller
2.三层架构:展现层+应用层+数据访问层
3.实际上,MVC只存在三层架构的展现层
4.注解说明:
@Controller:spring MVC里的controller类的注解
@RequestMapping:路径映射,会继承注解在类上的路径
@ResponseBody:指定返回数据,放在body里
@RequestBody:放在参数前面,将request的body里的数据解析到参数对象中
@PathVariable:用来解析路径,restful风格的http请求,会把资源ID,放在路径里,可以通过它来解析
@RestController:组合注解(常用),组合了@Controller和@ResponseBody注解
5.SpingMVC基本配置
1)静态资源映射
2)拦截器配置
3)@ControllerAdvice:全局配置
4)@ExceptionHandler:异常处理
5)@InitBinder:处理前台请求参数到model中的绑定值
6)ModelMapping:处理绑定值
6.其它配置,参考API(WebMvcConfigAdapter)
7.高级配置
1)文件上传配置
2)自定义HttpMessageConverter:处理http请求的数据
3)服务器推送技术:SSE、servlet3.0+
8.Spring MVC的测试:控制器的测试
四、实战SpringBoot
1.tomcat配置(SSL配置)
2.Favicon配置
3.WebSocket配置
4.事务
5.缓存
6.NoSql
7.安全控制:认证和授权
8.批处理(Spring Batch):定时任务
9.异步消息
10.系统集成(Spring Integration):不同系统之间传递数据
11.应用监控:actuator、SSH
附录:
1.其它注解声明:
1)事务处理:@Transcational
2)数据缓存:@Cacheable
3)APO切面相关:@Aspect、@After、@Before、@Around
4)创建bean的方式:@Scope,示例@Scope("prototype")表示每次新建都创建一个bean,相当于new一个。@Scope("singleton"),为默认配置,表示每次都是单例的,共享一个实例
5)注入“值”:@Value,示例:
@Value("需要赋值的字符串"):直接给变量赋值
@Value("#{systemProperties[]'os.name'}"):获取操作系统属性
@Value("classpath:com/.../test.txt"):注入文件资源
@Value("http://www.baidu.com"):注入网址资源
6)Bean的初始化和销毁:@Bean(initMethod="init",destroyMethod="destroy")
7)@Profile("dev"):可以通过spring的profiles.active参数,来实例化不同的bean
《spring boot 实战》读书笔记的更多相关文章
- csapp读书笔记-并发编程
这是基础,理解不能有偏差 如果线程/进程的逻辑控制流在时间上重叠,那么就是并发的.我们可以将并发看成是一种os内核用来运行多个应用程序的实例,但是并发不仅在内核,在应用程序中的角色也很重要. 在应用级 ...
- CSAPP 读书笔记 - 2.31练习题
根据等式(2-14) 假如w = 4 数值范围在-8 ~ 7之间 2^w = 16 x = 5, y = 4的情况下面 x + y = 9 >=2 ^(w-1) 属于第一种情况 sum = x ...
- CSAPP读书笔记--第八章 异常控制流
第八章 异常控制流 2017-11-14 概述 控制转移序列叫做控制流.目前为止,我们学过两种改变控制流的方式: 1)跳转和分支: 2)调用和返回. 但是上面的方法只能控制程序本身,发生以下系统状态的 ...
- CSAPP 并发编程读书笔记
CSAPP 并发编程笔记 并发和并行 并发:Concurrency,只要时间上重叠就算并发,可以是单处理器交替处理 并行:Parallel,属于并发的一种特殊情况(真子集),多核/多 CPU 同时处理 ...
- 读书笔记汇总 - SQL必知必会(第4版)
本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...
- 读书笔记--SQL必知必会18--视图
读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...
- 《C#本质论》读书笔记(18)多线程处理
.NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...
- C#温故知新:《C#图解教程》读书笔记系列
一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...
- C#刨根究底:《你必须知道的.NET》读书笔记系列
一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...
- Web高级征程:《大型网站技术架构》读书笔记系列
一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计 ...
随机推荐
- jquery遍历获取每一行数据进行对比
$("#dtlTable tr:gt(0)").each(function(i){ var orderQtyBy = $("input[name='orderQtyBys ...
- Python进阶【第四篇】函数
一.变量 变量是记录一系列状态变化的量 1.变量分为可变类型与不可变类型——可变 与不可变是根据变量在内存中占据的位置 可变类型:列表list[ ].字典dicta{ } 不可变类型:字符串str.数 ...
- MyBatis框架入门之(二)
在本篇文章中,没有对细节进行处理的很好,有很多晓得细节的遗漏,本文只是一个简单的快速的入门 MyBatis的快速入门 导入MyBatis框架jar包 配置文件 SqlSessionFactoryBui ...
- org.springframework.jdbc.UncategorizedSQLException
org.springframework.jdbc.UncategorizedSQLException: StatementCallback; uncategorized SQLException fo ...
- nginx的gzip压缩功能
我们在开发网站的时候,应该要考虑到pv,因为pv比较大可能会造成服务器带宽不够用,进而导致用户体验变差. 这个时候我们就可以考虑用nginx的gzip功能. 在nginx中开启gzip压缩功能很简单, ...
- 叶亚明:合格CTO的六要素(转)
叶亚明,携程旅行网CTO & 高级技术副总裁,负责携程的移动.Online.呼叫中心等的技术架构.开发及运营.在加入携程之前,叶亚明是ebay.com技术平台总监,领导ebay.com几代网站 ...
- bzoj 2733 永无乡 - 并查集 - 线段树
永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己的独一无二的重要度,按照重要度可 以将这 n 座岛排名,名次用 1 到 n 来表示.某些岛之间由巨大的桥连接,通过桥可以从一个岛 到达另一个岛. ...
- Jmeter在Linux下执行
1.上传jmeter文件到服务器上(最好自己建一个文件夹:如:mkidr yzb_jmeter) 2.上传jmeter脚本到yzb_jmeter,并修改权限:chmod +x 脚本文件 3.修改统计的 ...
- python第一阶段总结(1)
python3第一阶段的总结 首先申明一下,本人是看网络课程“老男孩”过来写博客的,想把自己学到的东西分享一下.同时给老男孩打个广告,其教学水平真的挺好的.仅据我个人多年的学习评价. 好,接下来是我对 ...
- CSS的初了解(更新中···)
在前面,我们学习了html的结构.基本骨架.起名方式和选择器,接下来,我们就要学习CSS了. 首先,我们要知道CSS是什么. CSS 全称叫层叠样式表,作用是给html添加样式style,添加属性. ...