diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/PropertiesRedisConnectionDetails.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/PropertiesRedisConnectionDetails.java index f562b81ebf6a..1efebda45e85 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/PropertiesRedisConnectionDetails.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/PropertiesRedisConnectionDetails.java @@ -60,8 +60,7 @@ public Standalone getStandalone() { if (this.properties.getUrl() != null) { ConnectionInfo connectionInfo = ConnectionInfo.of(this.properties.getUrl()); return Standalone.of(connectionInfo.getUri().getHost(), connectionInfo.getUri().getPort(), - (connectionInfo.getDatabase() != null) ? connectionInfo.getDatabase() - : this.properties.getDatabase()); + connectionInfo.getDatabase()); } return Standalone.of(this.properties.getHost(), this.properties.getPort(), this.properties.getDatabase()); } @@ -77,7 +76,7 @@ public Sentinel getSentinel() { @Override public int getDatabase() { - return PropertiesRedisConnectionDetails.this.properties.getDatabase(); + return getStandalone().getDatabase(); } @Override diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/RedisConnectionConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/RedisConnectionConfiguration.java index 035377ce7319..f24e4aa74ff5 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/RedisConnectionConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/RedisConnectionConfiguration.java @@ -191,9 +191,9 @@ static final class ConnectionInfo { private final String password; - private final Integer database; + private final int database; - private ConnectionInfo(URI uri, boolean useSsl, String username, String password, Integer database) { + private ConnectionInfo(URI uri, boolean useSsl, String username, String password, int database) { this.uri = uri; this.useSsl = useSsl; this.username = username; @@ -217,7 +217,7 @@ String getPassword() { return this.password; } - Integer getDatabase() { + int getDatabase() { return this.database; } @@ -242,7 +242,7 @@ static ConnectionInfo of(String url) { password = candidate; } } - Integer database = null; + int database = 0; if (StringUtils.hasText(uri.getPath())) { String[] pathSplit = uri.getPath().split("/", 2); if (pathSplit.length > 1 && !pathSplit[1].isEmpty()) { diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/redis/PropertiesRedisConnectionDetailsTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/redis/PropertiesRedisConnectionDetailsTests.java index e1b4bc16c038..2d93bcdc65c8 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/redis/PropertiesRedisConnectionDetailsTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/redis/PropertiesRedisConnectionDetailsTests.java @@ -114,7 +114,7 @@ void standaloneIsConfiguredFromUrlWithoutDatabase() { RedisConnectionDetails.Standalone standalone = connectionDetails.getStandalone(); assertThat(standalone.getHost()).isEqualTo("example.com"); assertThat(standalone.getPort()).isEqualTo(1234); - assertThat(standalone.getDatabase()).isEqualTo(5); + assertThat(standalone.getDatabase()).isEqualTo(0); } @Test @@ -144,9 +144,22 @@ void sentinelIsConfigured() { RedisProperties.Sentinel sentinel = new RedisProperties.Sentinel(); sentinel.setNodes(List.of("localhost:1111", "127.0.0.1:2222", "[::1]:3333")); this.properties.setSentinel(sentinel); + this.properties.setDatabase(5); PropertiesRedisConnectionDetails connectionDetails = new PropertiesRedisConnectionDetails(this.properties); assertThat(connectionDetails.getSentinel().getNodes()).containsExactly(new Node("localhost", 1111), new Node("127.0.0.1", 2222), new Node("[::1]", 3333)); + assertThat(connectionDetails.getSentinel().getDatabase()).isEqualTo(5); + } + + @Test + void sentinelDatabaseIsConfiguredFromUrl() { + RedisProperties.Sentinel sentinel = new RedisProperties.Sentinel(); + sentinel.setNodes(List.of("localhost:1111", "127.0.0.1:2222", "[::1]:3333")); + this.properties.setSentinel(sentinel); + this.properties.setUrl("redis://example.com:1234/9999"); + this.properties.setDatabase(5); + PropertiesRedisConnectionDetails connectionDetails = new PropertiesRedisConnectionDetails(this.properties); + assertThat(connectionDetails.getSentinel().getDatabase()).isEqualTo(9999); } }