《Spring Boot 实战》随记
第一部分 Spring 4.x
1. Spring基础
略过
2. Spring常用配置
2.1 Bean的scope
使用@Scope注解配置scope.默认signleton,原型模式prototype
2.2 Spring EL和资源调用
支持在xml和注解中使用表达式,需要@PropertySource注解指定文件
2.3 Bean的初始化和销毁
使用@Bean(intiMethod="init",destroyMethod="destroy")指定初始化方法和销毁前执行方法。
使用@Bean配合类内部@PostConstruct,@PreDestroy指定初始化方法和销毁前执行方法。
2.4 项目Profile
在容器启动时指定profile(spring.profiles.active),@Bean在实例化时通过@Profile("xxx")指定实例化特定的示例。
2.5 事件(Application Event)
Spring事件为Bean和Bean之间消息通信提供支持。如当一个Bean处理完任务后,希望通知另一个Bean做业务处理。
1) 自定义事件,继承ApplicationEvent 如DemoEvent extends ApplicationEvent
2) 定义监听器,实现ApplicationListener 如DemoListener immplements ApplicationListener
3) 使用容器发布事件 如在DemoPublisher中定义方法调用applicationContext.publishEvent(event)
3. Spring常用配置
3.1 Spring Aware
当Bean需要使用容器本身的功能资源时,通过Spring aware调用容器资源。但使用了spring aware后bean和spring框架将耦合
BeanNameAware 获取到容器中bean的名称
BeanFactoryAware 获取当前bean的facory
ApplicationContextAware 当前的applicationContext
ApplicationEventPublisherAware 应用事件发布器 与applicationContext.publishEvent效果相同
ResourceLoaderAware 获取资源加载器,可用来加载外部资源
注:实现ApplicationContextAware可满足以上所有服务,但原则上使用到什么就实现什么接口
3.2
9. 企业级开发
9.1 Spring Security
专门针对基于Spring的项目的安全框架,充分利用了依赖注入和AOP来实现安全功能
安全框架有两个重要概念:认证和授权
9.2 批处理Spring Batch
Spring Batch是用来处理大量数据操作的框架,主要用来读取大量数据,然后进行一定处理后输出指定的形式
9.3 消息队列
异步消息中有两个重要概念:即消息代理(message brocker)和目的地(destination)。当消息发送者发送消息后,消息将由broker接管,broker保证消息传递到指定的目的地。
消息队列主要有两种形式
队列queue:队列用于点对点式消息通信,确保每一条消息只有唯一的发送者和接收者。
主题topic:主题用于发布/订阅模式的消息通信,消息发送者发送消息到topic,多个消息接受者监听这个主题
JMS即JAVA消息服务,是基于JVM消息代理的规范,ActiveMQ是JMS规范的一种实现。
AMQP是另一种消息代理规范,兼容JMS,支持跨语言和平台。RabbitMQ是AMQP规范的一种实现
10. 开发部署与测试
10.1 热部署
在使用模板开发前端页面时,模板引擎默认开启缓存,此时修改页面代码刷新后页面上不能即时生效,可以在application.properties配置文件中关闭模板引擎缓存:
spring.thymeleaf.cache=false
spring.freemarker.cache=false
spring.groovy.template.cache=false
spring.velocity.cache=false
后端代码热部署:①使用Spring Loaded插件,需要在项目启动时指定vm启动参数
②使用JRebel
③使用spring-boot-devtools,项目中添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
10.2 部署方式
支持以jar和war方式部署,支持以系统服务的方式运行jar包
10.3 云部署
使用docker部署应用(本书实例是docker+docker-compose)
10.4 测试
在SpringBoot中使用@SpringApplicationConfiguration来配置Application Context
事例:
@RunWith(SpringRunner.class)
@SpringBootTest
11.应用监控
springboot提供了一系列的端点监控项目,端点可以在yml或properties配置文件中进行开启和关闭;
自定义端点:需要继承AbstractEndpoint,是用注解@ConfigurationPropertis(prefix="endpoint.xxx")支持可以在配置文件中通过endpoint.xxx配置端点
11.1 http方式监控
通过在项目中集成依赖,来支持端点
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.hateoas</groupId>
<artifactId>spring-hateoas</artifactId>
<version>0.17.0.RELEASE</version>
</dependency>
通过浏览器访问 http://ip:port/actuator/即可查看所有暴露出来的端点

注意:springboot 1.x 与springboot 2.x有部分差别(访问路径等)
11.2 JMX方式
使用jconsole监控项目,如需监控服务器上的应用需要远程连接
11.3 SSH方式(在2.x版本中已废弃)
在pom文件中依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-remote-shell</artifactId>
</dependency>
在项目启动时会在控制台打印除ssh的登录密码,使用ssh客户端工具连接即可
《Spring Boot 实战》随记的更多相关文章
- spring boot实战(第十三篇)自动配置原理分析
前言 spring Boot中引入了自动配置,让开发者利用起来更加的简便.快捷,本篇讲利用RabbitMQ的自动配置为例讲分析下Spring Boot中的自动配置原理. 在上一篇末尾讲述了Spring ...
- spring boot实战(第十二篇)整合RabbitMQ
前言 最近几篇文章将围绕消息中间件RabbitMQ展开,对于RabbitMQ基本概念这里不阐述,主要讲解RabbitMQ的基本用法.Java客户端API介绍.spring Boot与RabbitMQ整 ...
- 《spring boot 实战》读书笔记
前言:虽然已经用spring boot开发过一套系统,但是之前都是拿来主义,没有系统的,全面的了解过这套框架.现在通过学习<spring boot实战>这本书,希望温故知新.顺便实现自己的 ...
- 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相关内容写成一个系列的 ...
- [转] Spring Boot实战之Filter实现使用JWT进行接口认证
[From] http://blog.csdn.net/sun_t89/article/details/51923017 Spring Boot实战之Filter实现使用JWT进行接口认证 jwt(j ...
- 9.Spring Boot实战之配置使用Logback进行日志记录
转自:https://blog.csdn.net/meiliangdeng1990/article/details/54300227 Spring Boot实战之配置使用Logback进行日志记录 在 ...
- Spring Boot实战之定制URL匹配规则
本文首发于个人网站:Spring Boot实战之定制URL匹配规则 构建web应用程序时,并不是所有的URL请求都遵循默认的规则.有时,我们希望RESTful URL匹配的时候包含定界符". ...
- Spring Boot实战之定制type Formatters
本文首发于个人网站:Spring Boot实战之定制type Formatters 前面我们有篇文章介绍了PropertyEditors,是用来将文本类型转换成指定的Java类型,不过,考虑到Prop ...
随机推荐
- $.messager.show扩展:指定位置显示
扩展了个$.messager.showBySite,根据舍得的位置显示$.messager.show.代码如下: /** * 指定位置显示$.messager.show * options $.mes ...
- Java 和因特网
既然Java 不过另一种类型的程序设计语言,大家可能会奇怪它为什么值得如此重视,为什么还有这么多的人 认为它是计算机程序设计的一个里程碑呢?如果您来自一个传统的程序设计背景,那么答案在刚开始的时候 并 ...
- 数据库I/O:CMP、Hibernate
★什么是“Persistence” 用过VMWare的朋友大概都知道当一个guest OS正在运行的时候点击“Suspend”将虚拟OS挂起,它会把整个虚拟内存的内容保存到磁盘上,譬如你为虚拟OS分配 ...
- 【vijos】1286 座位安排(状压dp)
https://vijos.org/p/1286 这题好神不会捉... 首先我们知道所有情况有C(n*m, k)种,这个好搞.但是两两不相邻这个有点难搞.. 原来是状压dp..sigh. 设状态f[i ...
- poj 1419(图的着色问题,搜索)
题目链接:http://poj.org/problem?id=1419 思路:只怪数据太弱!直接爆搜,按顺序搜索即可. #include<iostream> #include<cst ...
- tinypng的python批量压缩图片功能
tinypng网站提供的图片压缩功能很不错,但是直接在网站上压缩有限制,大量压缩图片时比较麻烦,还好官方提供了很多脚本的自动化压缩接口.下面简单说下python批量压缩步骤. 1.申请api key ...
- Bouncy Castle Crypto API c# port
Bouncy Castle 是一种用于 Java 平台的开放源码的轻量级密码术包.它支持大量的密码术算法,并提供 JCE 1.2.1 的实现.现在有了C#的版本.下面是网站上的介绍 This port ...
- 《JAVA多线程编程核心技术》 笔记:第四章、Lock的使用
一.使用ReentrantLock类1.1 ReentrantLock的使用:1.2 ReentrantLock的不足:1.3 正确使用Condition实现等待/通知1.4 使用多个Conditio ...
- 第二课作业——redis常用命令
第二课时作业 静哥 by 2016.2.23~2016.2.22 [作业描述] 1.key string list hash结构中,每个至少完成5个命令,包含插入 修改 删除 查询,list 和h ...
- python的socket的学习
一.Socket相关知识 1.socket是什么: socket是应用层与TCP/IP协议族通信的中间软件抽象层,他是一组接口.在设计模式中,Socket其实就是一个门面模式. 它把复杂的TCP/IP ...