Fix FizzBeanFactoryPostProcessor.initReactiveStringRedisTemplate

This commit is contained in:
hongqiaowei
2022-07-09 18:24:52 +08:00
parent 95c2fccef2
commit 4beb93c359

View File

@@ -30,11 +30,13 @@ import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware; import org.springframework.context.ApplicationContextAware;
import org.springframework.context.EnvironmentAware; import org.springframework.context.EnvironmentAware;
import org.springframework.core.Ordered; import org.springframework.core.Ordered;
import org.springframework.core.env.*; import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.env.Environment;
import org.springframework.core.env.MapPropertySource;
import org.springframework.core.env.MutablePropertySources;
import org.springframework.data.redis.core.ReactiveStringRedisTemplate; import org.springframework.data.redis.core.ReactiveStringRedisTemplate;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import we.config.AggregateRedisConfig;
import we.config.FizzConfigConfiguration; import we.config.FizzConfigConfiguration;
import we.config.RedisReactiveProperties; import we.config.RedisReactiveProperties;
import we.context.config.annotation.FizzRefreshScope; import we.context.config.annotation.FizzRefreshScope;
@@ -70,26 +72,24 @@ public class FizzBeanFactoryPostProcessor implements BeanFactoryPostProcessor, E
} }
private void initReactiveStringRedisTemplate() { private void initReactiveStringRedisTemplate() {
Properties aggregateRedisProperties = new Properties();
boolean find = false;
for (PropertySource<?> propertySource : environment.getPropertySources()) {
if (MapPropertySource.class.isAssignableFrom(propertySource.getClass())) {
MapPropertySource mps = (MapPropertySource) propertySource;
String[] propertyNames = mps.getPropertyNames();
for (String propertyName : propertyNames) {
if (propertyName.startsWith(AggregateRedisConfig.AGGREGATE_REDIS_PREFIX)) {
aggregateRedisProperties.put(propertyName.substring(AggregateRedisConfig.AGGREGATE_REDIS_PREFIX.length() + 1), mps.getProperty(propertyName));
find = true;
}
}
if (find) {
break;
}
}
}
RedisReactiveProperties redisReactiveProperties = new RedisReactiveProperties() { RedisReactiveProperties redisReactiveProperties = new RedisReactiveProperties() {
}; };
PropertiesUtils.setBeanPropertyValue(redisReactiveProperties, aggregateRedisProperties);
String host = environment.getProperty("aggregate.redis.host");
if (StringUtils.isBlank(host)) {
redisReactiveProperties.setType(RedisReactiveProperties.CLUSTER);
redisReactiveProperties.setClusterNodes(environment.getProperty("aggregate.redis.clusterNodes"));
} else {
redisReactiveProperties.setHost(host);
redisReactiveProperties.setPort(Integer.parseInt(environment.getProperty("aggregate.redis.port")));
redisReactiveProperties.setDatabase(Integer.parseInt(environment.getProperty("aggregate.redis.database")));
}
String password = environment.getProperty("aggregate.redis.password");
if (StringUtils.isNotBlank(password)) {
redisReactiveProperties.setPassword(password);
}
reactiveStringRedisTemplate = ReactiveRedisHelper.getStringRedisTemplate(redisReactiveProperties); reactiveStringRedisTemplate = ReactiveRedisHelper.getStringRedisTemplate(redisReactiveProperties);
} }