Получение Компоненту требовался bean-компонент с именем redisTemplate, который не удалось найти. для нескольких различныJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Получение Компоненту требовался bean-компонент с именем redisTemplate, который не удалось найти. для нескольких различны

Сообщение Anonymous »

У меня возникла проблема с подключением к двум разным базам данных Redis в рамках одного экземпляра. Мой класс конфигурации Redis выглядит так:

Код: Выделить всё

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")
@Slf4j
public 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 userRedisTemplate(
@Qualifier(value = "redisUserConnectionFactory")
RedisConnectionFactory redisConnectionFactory) {
RedisTemplate 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 registrationTokenRedisTemplate(
@Qualifier(value = "redisRegistrationTokenConnectionFactory")
RedisConnectionFactory redisConnectionFactory) {
RedisTemplate  template = new RedisTemplate();
template.setConnectionFactory(redisConnectionFactory);
return template;
}
}

и выглядит так:

Код: Выделить всё

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">
4.0.0

org.springframework.boot
spring-boot-starter-parent
2.5.4


com.Application
ApiGateway
0.0.1-SNAPSHOT
ApiGateway
Application - ApiGateway

15

3.6.1
28.1-jre
1.4.200
2.1
4.5.9
5.3.2
1.1.0
1.18.20
1.3.0.Final
3.8.0
2.23.0
8.0.18
2.0.16
42.2.8
5.2.0.RELEASE
1.11.870
2.6
2.2.6.RELEASE

2.3
2020.0.3
2.5.0
3.7.0
2.2.9.RELEASE
3.0.3
9.11.1
2.5.5





org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
${spring-cloud-starter-eureka-client.version}



org.springframework.boot
spring-boot-starter-test
test


junit
junit


org.hamcrest
hamcrest-core


org.hamcrest
hamcrest-library





org.springframework.boot
spring-boot-starter-web



org.springframework.boot
spring-boot-starter-hateoas


org.springframework.boot
spring-boot-starter-data-jpa



org.springframework.cloud
spring-cloud-starter-netflix-zuul
${spring-cloud-starter-netflix-zuul.version}



org.springframework.cloud
spring-cloud-starter-openfeign



org.springframework.boot
spring-boot-starter-data-redis
${spring-boot-starter-redis.version}



org.springframework.boot
spring-boot-configuration-processor
${spring.boot.configuration.processor.version}




org.springframework.security
spring-security-core
${spring.security.version}


org.springframework.security
spring-security-web
${spring.security.version}


org.springframework.security
spring-security-config
${spring.security.version}





com.nimbusds
nimbus-jose-jwt
${nimbus-jose-jwt}



org.projectlombok
lombok
true



org.apache.commons
commons-math3
${apache.common.math.version}



commons-lang
commons-lang
${commons.lang.version}



org.apache.httpcomponents
httpclient
${http.client.version}


org.apache.pdfbox
pdfbox
${pdf.box.version}



org.mapstruct
mapstruct-processor
${mapstruct.version}
provided


org.mapstruct
mapstruct
${mapstruct.version}



com.google.guava
guava
${guava.version}



net.minidev
json-smart
${json-smart.version}



redis.clients
jedis
${redis.version}
jar



com.amazonaws
aws-java-sdk-cognitoidp
${aws.sdk.version}



com.amazonaws
aws-java-sdk
${aws.sdk.version}



com.amazonaws
aws-java-sdk-core
${aws.sdk.version}




com.h2database
h2
${h2.version}
runtime



mysql
mysql-connector-java
${mysql.driver.version}
runtime



org.postgresql
postgresql
${postgres.driver.version}
runtime




org.junit.jupiter
junit-jupiter-params
${junit.jupiter.version}
test


org.junit.jupiter
junit-jupiter-api
${junit.jupiter.version}
test


org.junit.jupiter
junit-jupiter-engine
${junit.jupiter.version}
test



org.hamcrest
hamcrest-library
${hamcrest.version}
test


org.hamcrest
hamcrest-core
${hamcrest.version}
test



org.mockito
mockito-junit-jupiter
${mockito.junit.jupiter.version}
test



org.springframework.security
spring-security-test
${spring.security.version}
test






org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import





app


org.springframework.boot
spring-boot-maven-plugin
${maven-plugin-version}





Пока приложение запускается, я получаю:

Код: Выделить всё

***************************
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.
Я немного сбит с толку, потому что я создал два отдельных компонента RestTemplate, и это все еще не принесло желаемого эффекта. Буду благодарен за предложения по решению данной проблемы.

Подробнее здесь: https://stackoverflow.com/questions/696 ... ot-be-foun
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»