2021年7月18日星期日

嵌入式Redis服务器在Spring Boot测试中的使用

1、概述

Spring Data Redis提供了一种与Redis实例集成的简单方法。

但是,在某些情况下,使用嵌入式服务器比使用真实服务器创建开发和测试环境更方便。

因此,我们将学习如何设置和使用嵌入式Redis服务器。

2、依赖

让我们首先添加必要的依赖项:

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency> <groupId>it.ozimov</groupId> <artifactId>embedded-redis</artifactId> <version>0.7.2</version> <scope>test</scope></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope></dependency>

这个spring-boot-starter-test包含我们需要运行集成测试的各种依赖。

此外,embedded-redis包含我们将使用的嵌入式服务器。

3、设置

添加依赖项后,我们应该定义Redis服务器和我们的应用程序之间的连接设置。

让我们首先创建一个类来保存我们的属性:

@Configurationpublic class RedisProperties { private int redisPort; private String redisHost; public RedisProperties(  @Value("${spring.redis.port}") int redisPort,  @Value("${spring.redis.host}") String redisHost) {  this.redisPort = redisPort;  this.redisHost = redisHost; } // getters}

接下来,我们应该创建一个配置类来定义连接并使用我们的属性:

@Configuration@EnableRedisRepositoriespublic class RedisConfiguration { @Bean public LettuceConnectionFactory redisConnectionFactory(  RedisProperties redisProperties) {  return new LettuceConnectionFactory(   redisProperties.getRedisHost(),   redisProperties.getRedisPort()); } @Bean public RedisTemplate<?, ?> redisTemplate(LettuceConnectionFactory connectionFactory) {  RedisTemplate<byte[], byte[]> template = new RedisTemplate<>();  template.setConnectionFactory(connectionFactory);  return template; }}

配置非常简单。这样我们的嵌入式服务器可以在其他的端口上运行。

4、嵌入式Redis服务器

现在,我们将配置嵌入式服务器并在我们的一项测试中使用它。

首先,让我们在测试的资源目录(src/test/resources)中创建一个application.properties文件:

spring.redis.host=localhostspring.redis.port=6370

之后,我们将创建一个@TestConfiguration注解的配置类:

@TestConfigurationpublic class TestRedisConfiguration { private RedisServer redisServer; public TestRedisConfiguration(RedisProperties redisProperties) {  this.redisServer = new RedisServer(redisProperties.getRedisPort()); } @PostConstruct public void postConstruct() {  redisServer.start(); } @PreDestroy public void preDestroy() {  redisServer.stop(); }}

当context上下文启动,服务器就跟着启动。它根据我们在属性中定义的端口运行在我们的机器上。有了它,我们现在可以在不停止实际Redis服务器的情况下运行测试了。

理想情况下,我们希望在随机可用端口上启动它,但嵌入式Redis尚不具备此功能。我们现在可以做的是通过ServerSocket API 获取随机端口。

此外,当上下文停止,服务器也跟着停止。

服务器也可以由我们自己的可执行文件来提供:

this.redisServer = new RedisServer("/path/redis", redisProperties.getRedisPort());

此外,可执行文件可以按不同的操作系统来定义:

RedisExecProvider customProvider = RedisExecProvider.defaultProvider().override(OS.UNIX, "/path/unix/red......

原文转载:http://www.shaoqun.com/a/887611.html

跨境电商:https://www.ikjzd.com/

terapeak:https://www.ikjzd.com/w/556

ensogo:https://www.ikjzd.com/w/1485

xinong:https://www.ikjzd.com/w/1368


1、概述SpringDataRedis提供了一种与Redis实例集成的简单方法。但是,在某些情况下,使用嵌入式服务器比使用真实服务器创建开发和测试环境更方便。因此,我们将学习如何设置和使用嵌入式Redis服务器。2、依赖让我们首先添加必要的依赖项:<dependency><groupId>org.springframework.boot</groupId><
inkfrog:https://www.ikjzd.com/w/668
圣诞节珠海下雪?长隆海洋王国跨年体验漫天飞雪?:http://www.30bags.com/a/422913.html
圣诞节做什么好呢?:http://www.30bags.com/a/403201.html
圣诞老人的老家 追寻芬兰的童话style:http://www.30bags.com/a/427169.html
圣诞老人在往哈尔滨途中摔倒 至今无人敢扶:http://www.30bags.com/a/416318.html
你家老公是怎么上你的 宝贝好想让你㖭我下面:http://lady.shaoqun.com/m/a/248214.html
男朋友在车里㖭我 随着车的晃动进进出出:http://lady.shaoqun.com/m/a/247484.html
学长把我压在桌子上要我 打开你的腿我想尝一尝:http://lady.shaoqun.com/m/a/247487.html
在恋爱中如何有效拒绝他的性要求?这些经验值得收集:http://lady.shaoqun.com/a/425260.html
幼儿园六一亲子活动+趣味体育活动节目,看过的导演都收藏了:http://lady.shaoqun.com/a/425261.html
经典影视剧回味:郭涛和梅婷演绎的最美的爱情故事,回味无穷:http://lady.shaoqun.com/a/425262.html
如何从一条腿判断一个男人好不好?:http://lady.shaoqun.com/a/425263.html

没有评论:

发表评论