主頁 > 知識庫 > 嵌入式Redis服務器在Spring Boot測試中的使用教程

嵌入式Redis服務器在Spring Boot測試中的使用教程

熱門標簽:十堰營銷電銷機器人哪家便宜 鄭州人工智能電銷機器人系統(tǒng) 宿遷便宜外呼系統(tǒng)平臺 日本中國地圖標注 貴州電銷卡外呼系統(tǒng) 超呼電話機器人 魔獸2青云地圖標注 北京400電話辦理收費標準 山東外呼銷售系統(tǒng)招商

1、概述

Spring Data Redis提供了一種與Redis實例集成的簡單方法。

但是,在某些情況下,使用嵌入式服務器比使用真實服務器創(chuàng)建開發(fā)和測試環(huán)境更方便。

因此,我們將學習如何設置和使用嵌入式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服務器和我們的應用程序之間的連接設置。

讓我們首先創(chuàng)建一個類來保存我們的屬性:

@Configuration
public 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
}

接下來,我們應該創(chuàng)建一個配置類來定義連接并使用我們的屬性:

@Configuration
@EnableRedisRepositories
public class RedisConfiguration {

    @Bean
    public LettuceConnectionFactory redisConnectionFactory(
      RedisProperties redisProperties) {
        return new LettuceConnectionFactory(
          redisProperties.getRedisHost(), 
          redisProperties.getRedisPort());
    }

    @Bean
    public RedisTemplate?, ?> redisTemplate(LettuceConnectionFactory connectionFactory) {
        RedisTemplatebyte[], byte[]> template = new RedisTemplate>();
        template.setConnectionFactory(connectionFactory);
        return template;
    }
}

配置非常簡單。這樣我們的嵌入式服務器可以在其他的端口上運行。

4、嵌入式Redis服務器

現(xiàn)在,我們將配置嵌入式服務器并在我們的一項測試中使用它。

首先,讓我們在測試的資源目錄(src/test/resources)中創(chuàng)建一個application.properties文件:

spring.redis.host=localhost
spring.redis.port=6370

之后,我們將創(chuàng)建一個@TestConfiguration注解的配置類:

@TestConfiguration
public 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上下文啟動,服務器就跟著啟動。它根據(jù)我們在屬性中定義的端口運行在我們的機器上。有了它,我們現(xiàn)在可以在不停止實際Redis服務器的情況下運行測試了。

理想情況下,我們希望在隨機可用端口上啟動它,但嵌入式Redis尚不具備此功能。我們現(xiàn)在可以做的是通過ServerSocket API 獲取隨機端口。

此外,當上下文停止,服務器也跟著停止。

服務器也可以由我們自己的可執(zhí)行文件來提供:

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

此外,可執(zhí)行文件可以按不同的操作系統(tǒng)來定義:

RedisExecProvider customProvider = RedisExecProvider.defaultProvider()
.override(OS.UNIX, "/path/unix/redis")
.override(OS.Windows, Architecture.x86_64, "/path/windows/redis")
.override(OS.MAC_OS_X, Architecture.x86_64, "/path/macosx/redis");

this.redisServer = new RedisServer(customProvider, redisProperties.getRedisPort());

最后,讓我們創(chuàng)建一個使用TestRedisConfiguration類的測試吧:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = TestRedisConfiguration.class)
public class UserRepositoryIntegrationTest {

    @Autowired
    private UserRepository userRepository;

    @Test
    public void shouldSaveUser_toRedis() {
        UUID id = UUID.randomUUID();
        User user = new User(id, "name");

        User saved = userRepository.save(user);

        assertNotNull(saved);
    }
}

這樣用戶保存就到了我們的嵌入式Redis服務器。

此外,我們必須手動將TestRedisConfiguration添加到SpringBootTest。正如我們之前所說,服務器在測試之前啟動并在測試之后停止。

5、結論

嵌入式Redis服務器是在測試環(huán)境中替換實際服務器的完美工具。我們已經(jīng)看到了如何配置它以及如何在我們的測試中使用它。

到此這篇關于嵌入式Redis服務器在Spring Boot測試中的使用的文章就介紹到這了,更多相關Redis Spring Boot使用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • springboot2整合redis使用lettuce連接池的方法(解決lettuce連接池無效問題)
  • 基于SpringBoot2.0默認使用Redis連接池的配置操作
  • SpringBoot中使用Redis的完整實例
  • springboot+redis過期事件監(jiān)聽實現(xiàn)過程解析
  • Spring boot+redis實現(xiàn)消息發(fā)布與訂閱的代碼
  • SpringBoot結合Redis哨兵模式的實現(xiàn)示例

標簽:江蘇 大慶 朝陽 楊凌 吉安 果洛 北京 臺州

巨人網(wǎng)絡通訊聲明:本文標題《嵌入式Redis服務器在Spring Boot測試中的使用教程》,本文關鍵詞  嵌入式,Redis,服務器,在,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《嵌入式Redis服務器在Spring Boot測試中的使用教程》相關的同類信息!
  • 本頁收集關于嵌入式Redis服務器在Spring Boot測試中的使用教程的相關信息資訊供網(wǎng)民參考!
  • 推薦文章