Код: Выделить всё
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;
}
}
Код: Выделить всё
pom.xml
Код: Выделить всё
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.
Подробнее здесь: https://stackoverflow.com/questions/696 ... ot-be-foun