Integration


Message Conversion

WebMvcConfigurationSupport 内含默认的 Converter

BufferedImageHttpMessageConverter 返回图片

@RequestMapping(path = "/image/{id}", produces = MediaType.IMAGE_JPEG_VALUE)
public BufferedImage getImage(@PathVariable Integer id) throws Exception {Weather weather = weatherMapper.getById(id);return ImageIO.read(weather.getPicture());
}

6. Mail

Spring Boot 的使用方式:

(1) 配置并将 JavaMailSender 注入到 IOC 容器,类似一个 Mail 工厂配置,可以 getSession,也可以 createMimeMessage

@Configuration
public class JavaMailConfig {@Bean(name = "javaMailSender")public JavaMailSenderImpl javaMailSender() {JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl(); // 唯一的实现javaMailSender.setHost("smtp.qq.com"); // 设置 SMTP 主机javaMailSender.setUsername("945086245@qq.com");javaMailSender.setPassword("password");javaMailSender.setDefaultEncoding("UTF-8");return javaMailSender;}
}

(2) 使用 javaMailSender 发送。MimeMessageHelper 类似 Builder 设计,但是没有做链式调用。

MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
mimeMessageHelper.setFrom("945086245@qq.com"); // 发送人
mimeMessageHelper.setTo(email); // 接收人
mimeMessageHelper.setSubject("验证码");
mimeMessageHelper.setText("您的验证码是: 9836, 如非本人操作请忽视。");
javaMailSender.send(mimeMessage);

8. Cache Abstraction

8.1. Understanding the Cache Abstraction

Buffer 和 Cache

一般地,buffer 可以翻译为缓冲区,用于高速与低速的实体之间的中间存储,缓冲区至少对知晓它的一方是可见的。

cache 可以翻译为缓存,根据定义是隐藏的,任何一方都不知晓。

Spring 提供了一些缓存抽象的实现

SpringBoot CacheAutoConfiguration 中使用 @Import 导入了 CacheConfigurationImportSelector.class,其中导入了枚举类 CacheType 中所有的缓存类型。

SimpleCacheConfiguration

底层使用 concurrentMap 实现,见 SimpleCacheConfiguration 注入 ConcurrentMapCacheManagerConcurrentMapCacheManager 属性 dynamic 可以配置 cacheName 是否可以动态生成,默认为 true。

8.2. Declarative Annotation-based Caching

Spring 缓存抽象提供了一组 Java 注解:

8.2.1. The @Cacheable Annotation

注解属性 说明
value / cacheNames 缓存的名字
key 缓存数据使用的 key,默认使用方法参数
keyGenerator 自定义 key 生成器,实现 KeyGenerator
cacheManager 指定缓存管理器
condition 指定符合条件的情况下才缓存
unless 缓存的否定条件
sync 是否使用异步模式
Default Key Generation

key 默认采用 SimpleKeyGenerator 生成。以方法参数为标识。

Synchronized Caching

Spring Core 框架的 CacheManager 实现都支持 sync。其他缓存库未必。

Available Caching SpEL Evaluation Context

Cache SpEL 可用元数据,具体见官方表。

8.2.2. The @CachePut Annotation

每次都调用方法,缓存结果。

8.2.3. The @CacheEvict annotation

清空缓存

8.2.6. Enabling Caching Annotations

@Configuration
@EnableCaching
public class AppConfig {}

8.3. JCache (JSR-107) Annotations

从 Spring 4.1 开始,Spring 缓存抽象完全支持 JCache 注解

8.3.1. Feature Summary

Spring JSR-107 备注
@Cacheable @CacheResult
@CachePut @CachePut
@CacheEvict @CacheRemove
@CacheEvict(allEntries=true) @CacheRemoveAll
@CacheConfig @CacheDefaults

JCache 的 CacheResolver 概念上与 Spring CacheResolver 接口相同,只是 JCache 仅支持单个 Cache。默认,Simple 实现会根据注解上的名称检索要使用的 Cache,如果注解上没有指定名称,则会自动生成一个默认值。

8.3.2. Enabling JSR-107 Support

如果类路径同时存在 JSR-107 API 和 spring-context-support,@EnableCachingcache:annotation-driven 都会自启用 JCache。

Spring Framework Integration 官方文档笔记相关推荐

  1. Spring Data Commons 官方文档学习

    Spring Data Commons 官方文档学习   -by LarryZeal Version 1.12.6.Release, 2017-07-27 为知笔记版本在这里,带格式. Table o ...

  2. Spring Framework 中文官方文档

    Spring Framework 中文官方文档 目前为最新版 5.3.11. 其他spring文档不断更新中 1.历史.设计理念.反馈.入门. Overview 2.IoC 容器.事件.资源.i18n ...

  3. 《Spring Cloud Netflix官方文档》2. 服务发现:Eureka服务器

    2. 服务发现:Eureka服务器 2.1 如何创建Eureka服务器 引用org.springframework.cloud的spring-cloud-starter-eureka-server就可 ...

  4. 《Spring Cloud Netflix官方文档》1.服务发现:Eureka客户端

    1.     服务发现:Eureka客户端 服务发现是微服务架构的关键原则之一.使用手动配置或一些约定方式来处理多服务多实例的方式是非常困难,并且十分脆弱的.Eureka同时是Netflix服务发现的 ...

  5. 【goldengate】官方文档笔记三 Oracle GoldenGate 实时报表

    这篇文档循序渐进的讲述了OGG在适时复制的几种配置方案.从最基本的配置开始讲起,逐渐加入新的进程,加入新的策略,配置也随之改变.下面从最基础的配置说起. 报表配置 一对一复制是OGG最基本的配置方案: ...

  6. 【goldengate】官方文档笔记四 Oracle GoldenGate实时数据分布

    数据分布配置是一对多得配置方案.OGG支持将源库同步到多个目标系统. 数据分布配置需要注意事项: 如果数据传输过程中,投递进程(data pump)发现目标库网络连接出现故障,捕获到得数据会继续像其它 ...

  7. Spring Boot配置文件规则以及使用方法官方文档查找以及Spring项目的官方文档查找方法...

    比如要使用Spring Boot实现一个功能,最直接的方式是Google,但是往往搜索出来的都比较乱,关键是乱在不同的版本上,比如1.x版本和2.x版本的配置是不一样的.最明显区别是在使用Thymel ...

  8. 关于Spring框架(官方文档)

    反应性堆栈上的Web Version 5.1.0.RELEASE 目录 1. Spring WebFlux 1.9.反应铁心 1.10.使用DispatcherHandler 1.11.带注释控制器 ...

  9. Unity官方文档笔记(一)在Unity中操作

    前言:本系列文档基于Unity 2019.4版本进行整理 一 系统要求 1.1 Unity Editor Windows 需要Win7(SP1+)及以上系统,仅限64位版本:CPU要求X64架构:GP ...

最新文章

  1. About darwin OS
  2. Go语言入门——dep入门
  3. 消除warning方法
  4. android打包成apk会屏蔽注解,Android解决混淆打包之后注解被去掉的问题-Go语言中文社区...
  5. 如何使用初始化列表消除冗余C++代码
  6. SQL中返回刚插入记录的ID
  7. android三国2,三国演义2单机版安卓
  8. HP 6L WIN7 WIN8 驱动
  9. 支持javascript的ppt软件_14款基于Javascript的数据可视化工具
  10. 烂笔头也需要常翻出来用用啊
  11. ADS1256,引起了通信丢失
  12. python打开word并定位_python自动化办公之 python操作Word
  13. Markdown语法手册
  14. WOT 2017会议嘉宾名单提前看!
  15. 形状因子对禁带的调控
  16. docker安装Mysql
  17. Libra最大的竞争对手是什么?Calibra高管给出答案
  18. CPU内部结构图和MicroBlaze内部结构图对比
  19. DLR in Silverlight
  20. 全新界面下拉整理 点心省电3.0版

热门文章

  1. 武汉本地三大门户网站的分析和比较!
  2. SpringCloud学习记录 | 第十五篇:SpringCloud Alibaba Nacos配置中心-单机版
  3. 最新推荐 | 清华NLP图神经网络GNN论文分门别类,16大应用200+篇论文
  4. 2.架设邮件服务器-windows 2003 POP3服务,SMTP服务收发邮件
  5. 超级App成为Gartner预测的战略技术,软件降本增效是否能进一步提速?
  6. HBase 数量统计
  7. 京东发布“厂直优品”计划 目标为超10万家制造企业搭建零售系统
  8. Leetcode501. Morris中序遍历
  9. 独立开发变现周刊(第80期):Notion页面转成网站客服小部件,月收入5K美金
  10. 拍照翻译的软件有什么?不妨试试这几款好用的软件