Quantcast
Channel: Active questions tagged redis+java - Stack Overflow
Viewing all articles
Browse latest Browse all 2204

Getting A component required a bean named 'redisTemplate' that could not be found. for multi different RedisTemplates configuration

$
0
0

I am facing a problem with connecting to two different Redis databases in the scope of the same instance. My Redis configuration class looks like this:

package com.application.apigateway.intrastructure.cache;import java.time.Duration;import java.util.Properties;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.PropertySource;import org.springframework.data.redis.connection.RedisConnectionFactory;import org.springframework.data.redis.connection.RedisPassword;import org.springframework.data.redis.connection.RedisStandaloneConfiguration;import org.springframework.data.redis.connection.jedis.JedisClientConfiguration;import org.springframework.data.redis.connection.jedis.JedisClientConfiguration.JedisClientConfigurationBuilder;import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;import org.springframework.data.redis.core.RedisTemplate;@Configuration@PropertySource("classpath:redis.properties")@Slf4jpublic class RedisConfiguration {  private static final String REDIS_PROPERTIES = "redis.properties";  private final Properties redisProperties = readConfigurationFile(REDIS_PROPERTIES);  @Value("${redis.host}")  private String host;  @Value("${redis.port}")  private int port;  @Value("${redis.password}")  private String password;  @Value("${redis.timeout}")  private String timeout;  @Bean(name = "redisUserConnectionFactory")  public JedisConnectionFactory redisUserConnectionFactory() {    RedisStandaloneConfiguration redisConfiguration = new RedisStandaloneConfiguration();    String userDb = getProperty(redisProperties, "redis.user.cache.database");    redisConfiguration.setHostName(host);    redisConfiguration.setPort(port);    redisConfiguration.setDatabase(Integer.parseInt(userDb));    redisConfiguration.setPassword(RedisPassword.of(password));    JedisClientConfigurationBuilder jedisClientConfiguration = JedisClientConfiguration.builder();    jedisClientConfiguration.connectTimeout(Duration.ofMillis(Long.parseLong(timeout)));    log.info("Connected to Redis host: {}, port: {}, database: {}",        redisConfiguration.getHostName(),        redisConfiguration.getPort(),        redisConfiguration.getDatabase());    return new JedisConnectionFactory(redisConfiguration, jedisClientConfiguration.build());  }  @Bean(name = "userRedisTemplate")  public RedisTemplate<String, Object> userRedisTemplate(      @Qualifier(value = "redisUserConnectionFactory")          RedisConnectionFactory redisConnectionFactory) {    RedisTemplate<String, Object> template = new RedisTemplate<>();    template.setConnectionFactory(redisConnectionFactory);    return template;  }  @Bean(name = "redisRegistrationTokenConnectionFactory")  public JedisConnectionFactory redisRegistrationTokenConnectionFactory() {    RedisStandaloneConfiguration redisConfiguration = new RedisStandaloneConfiguration();    String registrationTokenDb =        getProperty(redisProperties, "redis.registration.token.cache.database");    redisConfiguration.setHostName(host);    redisConfiguration.setPort(port);    redisConfiguration.setDatabase(Integer.parseInt(registrationTokenDb));    redisConfiguration.setPassword(RedisPassword.of(password));    JedisClientConfigurationBuilder jedisClientConfiguration = JedisClientConfiguration.builder();    jedisClientConfiguration.connectTimeout(Duration.ofMillis(Long.parseLong(timeout)));    log.info("Connected to Redis host: {}, port: {}, database: {}",        redisConfiguration.getHostName(),        redisConfiguration.getPort(),        redisConfiguration.getDatabase());    return new JedisConnectionFactory(redisConfiguration, jedisClientConfiguration.build());  }  @Bean(name = "registrationTokenRedisTemplate")  public RedisTemplate<String, Object> registrationTokenRedisTemplate(      @Qualifier(value = "redisRegistrationTokenConnectionFactory")          RedisConnectionFactory redisConnectionFactory) {    RedisTemplate<String, Object> template = new RedisTemplate<>();    template.setConnectionFactory(redisConnectionFactory);    return template;  }}

and

pom.xml looks like:

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.4</version><relativePath/></parent><groupId>com.Application</groupId><artifactId>ApiGateway</artifactId><version>0.0.1-SNAPSHOT</version><name>ApiGateway</name><description>Application - ApiGateway</description><properties><java.version>15</java.version><apache.common.math.version>3.6.1</apache.common.math.version><guava.version>28.1-jre</guava.version><h2.version>1.4.200</h2.version><hamcrest.version>2.1</hamcrest.version><http.client.version>4.5.9</http.client.version><junit.jupiter.version>5.3.2</junit.jupiter.version><junit.surefire.version>1.1.0</junit.surefire.version><lombok.version>1.18.20</lombok.version><mapstruct.version>1.3.0.Final</mapstruct.version><maven.compiler.version>3.8.0</maven.compiler.version><mockito.junit.jupiter.version>2.23.0</mockito.junit.jupiter.version><mysql.driver.version>8.0.18</mysql.driver.version><pdf.box.version>2.0.16</pdf.box.version><postgres.driver.version>42.2.8</postgres.driver.version><spring.security.version>5.2.0.RELEASE</spring.security.version><aws.sdk.version>1.11.870</aws.sdk.version><commons.lang.version>2.6</commons.lang.version><spring.boot.configuration.processor.version>2.2.6.RELEASE</spring.boot.configuration.processor.version><json-smart.version>2.3</json-smart.version><spring-cloud.version>2020.0.3</spring-cloud.version><spring-boot-starter-redis.version>2.5.0</spring-boot-starter-redis.version><redis.version>3.7.0</redis.version><spring-cloud-starter-netflix-zuul.version>2.2.9.RELEASE</spring-cloud-starter-netflix-zuul.version><spring-cloud-starter-eureka-client.version>3.0.3</spring-cloud-starter-eureka-client.version><nimbus-jose-jwt>9.11.1</nimbus-jose-jwt><maven-plugin-version>2.5.5</maven-plugin-version></properties><dependencies><!-- SPRING STARTERS --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId><version>${spring-cloud-starter-eureka-client.version}</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>junit</groupId><artifactId>junit</artifactId></exclusion><exclusion><groupId>org.hamcrest</groupId><artifactId>hamcrest-core</artifactId></exclusion><exclusion><groupId>org.hamcrest</groupId><artifactId>hamcrest-library</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-hateoas</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-zuul</artifactId><version>${spring-cloud-starter-netflix-zuul.version}</version></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><version>${spring-boot-starter-redis.version}</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><version>${spring.boot.configuration.processor.version}</version></dependency><!-- SPRING --><dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-core</artifactId><version>${spring.security.version}</version></dependency><dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-web</artifactId><version>${spring.security.version}</version></dependency><dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-config</artifactId><version>${spring.security.version}</version></dependency><!-- OTHERS --><dependency><groupId>com.nimbusds</groupId><artifactId>nimbus-jose-jwt</artifactId><version>${nimbus-jose-jwt}</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-math3</artifactId><version>${apache.common.math.version}</version></dependency><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>${commons.lang.version}</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>${http.client.version}</version></dependency><dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>${pdf.box.version}</version></dependency><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct-processor</artifactId><version>${mapstruct.version}</version><scope>provided</scope></dependency><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct</artifactId><version>${mapstruct.version}</version></dependency><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>${guava.version}</version></dependency><dependency><groupId>net.minidev</groupId><artifactId>json-smart</artifactId><version>${json-smart.version}</version></dependency><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>${redis.version}</version><type>jar</type></dependency><dependency><groupId>com.amazonaws</groupId><artifactId>aws-java-sdk-cognitoidp</artifactId><version>${aws.sdk.version}</version></dependency><dependency><groupId>com.amazonaws</groupId><artifactId>aws-java-sdk</artifactId><version>${aws.sdk.version}</version></dependency><dependency><groupId>com.amazonaws</groupId><artifactId>aws-java-sdk-core</artifactId><version>${aws.sdk.version}</version></dependency><!-- DB --><dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><version>${h2.version}</version><scope>runtime</scope></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.driver.version}</version><scope>runtime</scope></dependency><dependency><groupId>org.postgresql</groupId><artifactId>postgresql</artifactId><version>${postgres.driver.version}</version><scope>runtime</scope></dependency><!-- TEST --><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-params</artifactId><version>${junit.jupiter.version}</version><scope>test</scope></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>${junit.jupiter.version}</version><scope>test</scope></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-engine</artifactId><version>${junit.jupiter.version}</version><scope>test</scope></dependency><dependency><groupId>org.hamcrest</groupId><artifactId>hamcrest-library</artifactId><version>${hamcrest.version}</version><scope>test</scope></dependency><dependency><groupId>org.hamcrest</groupId><artifactId>hamcrest-core</artifactId><version>${hamcrest.version}</version><scope>test</scope></dependency><dependency><groupId>org.mockito</groupId><artifactId>mockito-junit-jupiter</artifactId><version>${mockito.junit.jupiter.version}</version><scope>test</scope></dependency><dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-test</artifactId><version>${spring.security.version}</version><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><finalName>app</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${maven-plugin-version}</version></plugin></plugins></build></project>

While the application starts I am receiving:

***************************APPLICATION FAILED TO START***************************Description:A component required a bean named 'redisTemplate' that could not be found.Action:Consider defining a bean named 'redisTemplate' in your configuration.

I am a little bit confused because I created two separated RestTemplate beans and it still doesn't bring a desirable effect. I will be grateful for suggestions on how to fix this problem.


Viewing all articles
Browse latest Browse all 2204

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>