当前位置: 首页 > 知识库问答 >
问题:

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

督辉
2023-03-14

我让Spring Redis使用spring-data-redis和所有默认配置工作,比如localhostdefaultport等等。

现在,我试图通过在application.properties文件中配置它来进行相同的配置。但是我不知道应该如何创建bean,准确地读取我的属性值。

@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);
}
}

spring.redis.sentinel.master=themaster

spring.redis.sentinel.nodes=192.168.188.231:26379

spring.redis.password=12345

我所尝试的,

  1. 我可以使用@propertysource,然后注入@value并获取值。但我不想这么做,因为这些属性不是我定义的,而是来自Spring。
  2. 在本文档Spring Redis文档中,它只说明可以使用属性进行配置,但没有给出具体示例。
  3. 我还查看了Spring Data Redis API类,发现redisproperties应该对我有所帮助,但仍然不知道如何确切地告诉Spring从属性文件中读取。

共有1个答案

吕俊美
2023-03-14

您可以使用@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<Object, Object> redisTemplate() {
        RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<Object, Object>();
        redisTemplate.setConnectionFactory(jedisConnectionFactory());
        return redisTemplate;
    }

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

目前(2015年12月),application.properties中的spring.redis.sentinel选项对redissentinelconfiguration的支持有限:

请注意,目前只有杰迪斯和生菜生菜支持雷迪斯哨兵。

你可以在官方文件中读到更多关于这一点的信息。

 类似资料:
  • 问题内容: 我让Spring Redis使用所有默认配置(例如default 等)。 现在,我试图通过在文件中进行配置来进行相同的配置。但是我无法弄清楚应该如何准确地读取属性值来创建bean。 Redis配置文件 application.properties中的标准参数 spring.redis.sentinel.master = themaster spring.redis.sentinel.n

  • 我无法找出是否可以在pom.xml文件中读取Spring的application.properties中的任何数据。 拜托,有人能帮我吗? 谢谢你。

  • 我正在学习使用带有Spring Boot的Apache Camel。我正在制作一个演示,我正在从FTP位置拾取文件并将其放置到不同的位置。 当我在方法中直接使用ftps uri时,路由会起作用。但是,当我尝试在应用程序中存储ftps位置时。属性文件,并从那里访问它,我得到一个标记无效的错误。 这工作原理: 这不会: 应用属性文件 骆驼路线 这是我得到的错误: pom。xml 有人能指出我哪里错了吗

  • 问题内容: 只是因为一个简单,易于表达的陈述使我的脸上有些错误,所以我有点头疼。 我有一个名为strings.json的json文件,如下所示: 我现在想读取json文件。我发现了以下这些语句,但是不起作用: 控制台上显示的错误是这样的: 已编辑 从更改为 并得到了这个: 问题答案: 该方法(“ load”中没有“ s”)可以直接读取文件: 您正在使用方法,该方法仅用于 字符串 参数。 编辑:新消

  • 我有一个名为Strings.json的json文件,如下所示: 我想读取json文件,现在仅此而已。我发现了这些说法,但它不起作用: 控制台上显示的错误是: 已编辑 从更改为 得到了这个:

  • 一个看起来简单、容易的陈述却让我犯了一些错误。 我有一个名为strings.json的JSON文件,如下所示: 我想阅读JSON文件,目前仅此而已。我发现了这些语句,但它不起作用: 控制台上显示的错误如下: 如果我使用<code>json。加载而不是<code>json。加载,我得到以下错误: