首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >可以在类之间缓存Spring的应用程序上下文吗?

可以在类之间缓存Spring的应用程序上下文吗?
EN

Stack Overflow用户
提问于 2017-09-05 09:40:27
回答 1查看 2.7K关注 0票数 4

我正在努力提高我正在从事的一个项目的Spring集成测试的性能。我们使用Spring + Gradle + JUnit。

build.gradle文件中使用此配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
test {
    useJUnit()
    setForkEvery(0)
    setMaxParallelForks(1)
}

我们能够在一个JVM中运行所有测试。虽然我认为这是默认行为。

但是我一直在阅读关于Spring测试上下文缓存的文章,并且在我的应用程序中使用了这个属性-test.yml:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
logging:
  level:
    org:
      springframework:
        test:
          context:
            cache: DEBUG

我注意到在同一个类中运行的测试方法的下列日志

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
2017-09-05 08:33:11.829 DEBUG 5764 --- [    Test worker] c.DefaultCacheAwareContextLoaderDelegate : Storing ApplicationContext in cache under key [THIS HAD SENSITIVE DATA]
2017-09-05 08:33:11.830 DEBUG 5764 --- [    Test worker] org.springframework.test.context.cache   : Spring test ApplicationContext cache statistics: [DefaultContextCache@572e81e7 size = 1, maxSize = 32, parentContextCount = 0, hitCount = 0, missCount = 1]
2017-09-05 08:33:11.849 DEBUG 5764 --- [    Test worker] c.DefaultCacheAwareContextLoaderDelegate : Retrieved ApplicationContext from cache with key [THIS HAD SENSITIVE DATA]
2017-09-05 08:33:11.850 DEBUG 5764 --- [    Test worker] org.springframework.test.context.cache   : Spring test ApplicationContext cache statistics: [DefaultContextCache@572e81e7 size = 1, maxSize = 32, parentContextCount = 0, hitCount = 1, missCount = 1]

还有更多的行表示Retrieved ApplicationContext from cache with key...

对于在其他类中运行的测试方法,我注意到类似的日志,例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
2017-09-05 08:33:12.971 DEBUG 10288 --- [    Test worker] c.DefaultCacheAwareContextLoaderDelegate : Storing ApplicationContext in cache under key [THIS HAD SENSITIVE DATA]
2017-09-05 08:33:12.971 DEBUG 10288 --- [    Test worker] org.springframework.test.context.cache   : Spring test ApplicationContext cache statistics: [DefaultContextCache@2dad6721 size = 1, maxSize = 32, parentContextCount = 0, hitCount = 0, missCount = 1]
2017-09-05 08:33:13.194 DEBUG 10288 --- [    Test worker] c.DefaultCacheAwareContextLoaderDelegate : Retrieved ApplicationContext from cache with key [THIS HAD SENSITIVE DATA]
2017-09-05 08:33:13.194 DEBUG 10288 --- [    Test worker] org.springframework.test.context.cache   : Spring test ApplicationContext cache statistics: [DefaultContextCache@2dad6721 size = 1, maxSize = 32, parentContextCount = 0, hitCount = 1, missCount = 1]

这两个类都有相同的注释:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
@ActiveProfiles({"default", "profile-1", "profile-2"})
public class SomeControllerTest {

    // Test methods...
}

我认为两个类中的测试方法应该能够共享相同的ApplicationContext,从而减少测试持续的时间。但是,有可能做到这一点吗?如果是这样的话,是怎么做的?

我注意到两个ApplicationContext对象大约同时存储在缓存中,08:33:11.82908:33:12.971。测试运行程序在不同的线程中执行测试吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-06 06:04:00

您的上下文实际上是缓存的,但是由于使用Spring的@MockBean特性,您实际上有两个不同的上下文。

@MockBean的使用使每个ApplicationContext都有一个不同的唯一键,将其存储在上下文缓存中。

尽管在任何地方都可能没有公开文档,但实际上在org.springframework.boot.test.mock.mockito.MockitoContextCustomizerFactory的实现中有在线文档。

我们在这里收集显式模拟定义,因为它们构成了MergedContextConfiguration键的一部分。不同的模拟需要有不同的键。

我已经打开了一个针对Spring的问题来记录这个行为:https://github.com/spring-projects/spring-boot/issues/10182

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46060579

复制
相关文章
[喵咪PHP]页面显示空白问题
#[喵咪PHP]页面显示空白问题# ##前言## 哈喽!大家好啊,喵咪PHP第一次和大家见面了,熟悉的朋友呢也之道喵咪我也开了喵咪Liunx和喵咪Golang这两个坑目的呢是吧平常遇到的一些问题或者是
喵了个咪233
2018/03/02
2.2K0
[喵咪PHP]页面显示空白问题
AngularJS系列之select下拉选择第一个选项为空白的解决办法
今天给大家介绍一下AngularJS系列之select下拉选择第一个选项为空白的解决办法。 相信大家也经常遇到这种情况吧:在使用AngularJS中的select组件开发的时候,莫名其妙的第一个选项就
林老师带你学编程
2018/01/03
3.2K0
centos打开windows的ftp 无法显示内容 显示空白内容
centos下gnome打开windows FTP显示空白,无内容,windows下 打开正常。
全栈程序员站长
2022/07/05
6.3K0
centos打开windows的ftp 无法显示内容 显示空白内容
7个有用的Pandas显示选项
andas是一个在数据科学中常用的功能强大的Python库。它可以从各种来源加载和操作数据集。当使用Pandas时,默认选项就已经适合大多数人了。但是在某些情况下,我们可能希望更改所显示内容的格式。所以就需要使用Pandas的一些定制功能来帮助我们自定义内容的显示方式。
deephub
2023/02/01
1.3K0
显示器 设置选项 解析
明亮度 Gama:显示器的输出图像对输入信号的失真程度。 DCR:Dynamic Contrast Ratio,动态对比率。自动判断画面整体亮度,对画面各部分进行亮度调整,使细节更清晰,层次更分明。 颜色设置 色温 暖色 正常 冷色 sRGB:RGB(色彩空间)的一种标准。 DCB模式 OSD设置 其他 DDC/CI:Display Data Channel Command Interface,基于DDC/CI协议,用户可以通过鼠标和人性化的软件界面来完成显示器的各项设置和色彩调节,
JNingWei
2018/09/28
1.6K0
图片的选择和显示
这个就是图片的选择框,在我们点击这个框的时候会给我们弹出一个文件选择,当我们选中图片的时候就把图片显示在这个框上面,如果选中的不是一个图片这个时候就需要用到一个正则表达式来进行一个判断。
PHY_68
2020/09/16
1K0
图片的选择和显示
Windows 预览体验计划 空白 不显示内容
以管理员身份启动 PowerShell,可以直接在搜索框中搜索,右键选择“以管理员身份运行”
季春二九
2023/03/22
9090
Windows 预览体验计划 空白 不显示内容
部分手机访问https显示空白页
事情是这样的。。。。。此处省略1000字!
思梦php
2018/03/01
1.4K0
部分手机访问https显示空白页
部分手机访问https显示空白页
突然客服告诉我,众享通赢的消费平台怎么登陆不进去了???而且还一直显示空白页???,程序员你做了什么了???额,,然后我表示一脸懵逼....
思梦php
2018/03/16
3.1K10
部分手机访问https显示空白页
OpenCV基础03--创建空白图像和显示
以下程序也与以前的程序非常相似。唯一的区别是该程序创建一个空白图像,而不是从文件加载现有图像。
软件架构师Michael
2023/09/11
5280
Confluence 6 修改导航显示选项 原
https://www.cwiki.us/display/CONF6ZH/Configure+the+Sidebar
HoneyMoose
2019/01/30
1.4K0
Confluence 6 修改导航显示选项
                                                                            原
uniapp组件引入canvas显示不出来空白
2023/10/18
9820
uniapp组件引入canvas显示不出来空白
dedecms后台左侧菜单空白不显示怎么处理
  有一位网友反映说迁移服务器后,进入dedecms后台发现左边菜单一片空白,显示不出来,遇到这种现象一般是空间的权限问题,没有写入权限,修改一下空间的目录权限就可以了,   1.首先进行判断是程序问题还是权限问题。通常这种都属于权限问题。   2.使用FTP登陆网站。找到DATA/tplcache 文件夹。将里面的数据备份。   3.在文件夹上面右键。并设置其属性为777。然后将里面的文件除了index.html文件外全部删除。   4.刷新后台。问题解决,dede后台菜单正常显示!   有些朋友
ytkah
2018/03/06
6.5K0
localStorage 的相关运用
localStorage 是浏览器自带的一个属性,只读的localStorage 属性允许你访问一个Document 源(origin)的对象 Storage;存储的数据将保存在浏览器会话中。localStorage 类似 sessionStorage,但其区别在于:存储在 localStorage 的数据可以长期保留;而当页面会话结束——也就是说,当页面被关闭时,存储在 sessionStorage 的数据会被清除。
子舒
2023/08/23
2730
localStorage 的相关运用
部分手机访问https显示空白页
突然客服告诉我,众享通赢的消费平台怎么登陆不进去了???而且还一直显示空白页???,程序员你做了什么了???额,,然后我表示一脸懵逼....
思梦php
2018/02/10
1.5K0
部分手机访问https显示空白页
选择篇(017)-哪个选项是不正确的?
在JavaScript中,所有对象键都是字符串(除了Symbol)。尽管有时我们可能不会给定字符串类型,但它们总是被转换为字符串。
齐丶先丶森
2022/05/12
1.3K0
Labview选项卡之实现被选择选项卡工作
有些时候,我们做界面,需要好多个界面切换。如果是同一个 VI 里界面切换,一般都是选项卡了。切换不同选项卡就切换界面了。
Gnep@97
2023/08/16
7681
Labview选项卡之实现被选择选项卡工作
Bootstrap 初级错误导致显示空白页
在官网下载bootstrap代码,引入js、css、font文件,然而项目启动之后整个页面只是空白,怎么刷新重新部署都无法显示内容。
程序新视界
2022/05/06
7350
echarts插件-从后台请求的数据在页面显示空白的问题
最近的项目里面关于统计图方面的问题,有涉及到很多,也在博客里面更新了自己所遇到的问题,开发过程中会遇到很多问题,解决技术问题的方法也有千千万
王小婷
2018/08/22
1.2K0
echarts插件-从后台请求的数据在页面显示空白的问题
点击加载更多

相似问题

LocalStorage选择已禁用

12

Jquery链式选择框,如何禁用空白选项

16

如何在选择AngularJS中禁用空白选项?

10

ng-带localStorage选项的显示

10

多选择下拉列表显示选项为空白?

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文