当前位置:  开发笔记 > 编程语言 > 正文

Spring Redis - 从application.properties文件中读取配置

如何解决《SpringRedis-从application.properties文件中读取配置》经验,为你挑选了2个好方法。

我使用Spring Redis的工作spring-data-redis与所有默认配置喜欢localhost默认port等.

现在我尝试通过在application.properties文件中配置它来进行相同的配置.但我无法弄清楚我应该如何创建完全符合我的属性值的bean.

Redis配置文件

@EnableRedisHttpSession
@Configuration
public class SpringSessionRedisConfiguration {

@Bean
JedisConnectionFactory connectionFactory() {
    return new JedisConnectionFactory();
}

@Autowired
@Bean
RedisCacheManager redisCacheManager(final StringRedisTemplate stringRedisTemplate) {
    return new RedisCacheManager(stringRedisTemplate);
}

@Autowired
@Bean
StringRedisTemplate template(final RedisConnectionFactory connectionFactory) {
    return new StringRedisTemplate(connectionFactory);
}
}

application.properties中的标准参数

spring.redis.sentinel.master =大师

spring.redis.sentinel.nodes = 192.168.188.231:26379

spring.redis.password = 12345

我试过的,

    我可以使用@PropertySource然后注入@Value并获取值.但是我不想这样做,因为这些属性不是由我定义的,而是来自Spring.

    在本文档Spring Redis文档中,它只表示可以使用属性进行配置,但不显示具体示例.

    我还经历了Spring Data Redis API类,并发现RedisProperties应该对我有所帮助,但仍然无法弄清楚究竟如何告诉Spring从属性文件中读取.

misterion.. 28

您可以使用@PropertySource从application.properties或所需的其他属性文件中读取选项.请查看PropertySource用法示例和使用spring-redis-cache的工作示例.或者看看这个小样本:

@Configuration
@PropertySource("application.properties")
public class SpringSessionRedisConfiguration {

    @Value("${redis.hostname}")
    private String redisHostName;

    @Value("${redis.port}")
    private int redisPort;

    @Bean
    public static PropertySourcesPlaceholderConfigurer    propertySourcesPlaceholderConfigurer() {
        return new PropertySourcesPlaceholderConfigurer();
    }

    @Bean
    JedisConnectionFactory jedisConnectionFactory() {
        JedisConnectionFactory factory = new JedisConnectionFactory();
        factory.setHostName(redisHostName);
        factory.setPort(redisPort);
        factory.setUsePool(true);
        return factory;
    }

    @Bean
    RedisTemplate redisTemplate() {
        RedisTemplate redisTemplate = new RedisTemplate();
        redisTemplate.setConnectionFactory(jedisConnectionFactory());
        return redisTemplate;
    }

    @Bean
    RedisCacheManager cacheManager() {
        RedisCacheManager redisCacheManager = new RedisCacheManager(redisTemplate());
        return redisCacheManager;
    }
}

目前(2015年12月),spring.redis.sentinel选项对以下application.properties内容的支持有限RedisSentinelConfiguration:

请注意,目前只有Jedis和生菜生菜支持Redis Sentinel.

您可以在官方文档中阅读更多相关信息.



1> misterion..:

您可以使用@PropertySource从application.properties或所需的其他属性文件中读取选项.请查看PropertySource用法示例和使用spring-redis-cache的工作示例.或者看看这个小样本:

@Configuration
@PropertySource("application.properties")
public class SpringSessionRedisConfiguration {

    @Value("${redis.hostname}")
    private String redisHostName;

    @Value("${redis.port}")
    private int redisPort;

    @Bean
    public static PropertySourcesPlaceholderConfigurer    propertySourcesPlaceholderConfigurer() {
        return new PropertySourcesPlaceholderConfigurer();
    }

    @Bean
    JedisConnectionFactory jedisConnectionFactory() {
        JedisConnectionFactory factory = new JedisConnectionFactory();
        factory.setHostName(redisHostName);
        factory.setPort(redisPort);
        factory.setUsePool(true);
        return factory;
    }

    @Bean
    RedisTemplate redisTemplate() {
        RedisTemplate redisTemplate = new RedisTemplate();
        redisTemplate.setConnectionFactory(jedisConnectionFactory());
        return redisTemplate;
    }

    @Bean
    RedisCacheManager cacheManager() {
        RedisCacheManager redisCacheManager = new RedisCacheManager(redisTemplate());
        return redisCacheManager;
    }
}

目前(2015年12月),spring.redis.sentinel选项对以下application.properties内容的支持有限RedisSentinelConfiguration:

请注意,目前只有Jedis和生菜生菜支持Redis Sentinel.

您可以在官方文档中阅读更多相关信息.


`RedisSentinelConfiguration`有一个带有`PropertySource`的构造函数,这个构造函数已经有了一个读取这两个特定于Sentinal的属性的逻辑.我现在想弄清楚,如何传递我的`application.properties`的`PropertySource`

2> 小智..:

看得更深,我发现了这个,这可能是你想要的吗?

# REDIS (RedisProperties)
spring.redis.database=0 # Database index used by the connection factory.
spring.redis.host=localhost # Redis server host.
spring.redis.password= # Login password of the redis server.
spring.redis.pool.max-active=8 # Max number of connections that can be allocated by the pool at a given time. Use a negative value for no limit.
spring.redis.pool.max-idle=8 # Max number of "idle" connections in the pool. Use a negative value to indicate an unlimited number of idle connections.
spring.redis.pool.max-wait=-1 # Maximum amount of time (in milliseconds) a connection allocation should block before throwing an exception when the pool is exhausted. Use a negative value to block indefinitely.
spring.redis.pool.min-idle=0 # Target for the minimum number of idle connections to maintain in the pool. This setting only has an effect if it is positive.
spring.redis.port=6379 # Redis server port.
spring.redis.sentinel.master= # Name of Redis server.
spring.redis.sentinel.nodes= # Comma-separated list of host:port pairs.
spring.redis.timeout=0 # Connection timeout in milliseconds. 

参考:https: //docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html Searchterm Redis

从我可以看到的值已经存在并被定义为

spring.redis.host=localhost # Redis server host.
spring.redis.port=6379 # Redis server port.

如果你想创建自己的属性,你可以在这个帖子中查看我以前的帖子.

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有