redis-spring读取int属性文件

时间:2018-07-17 18:20:36

标签: spring properties-file

我正在尝试从.properties文件中获取redis.port和redis.host值。

在应用程序属性中,我具有:

 spring.redis.host=localhost

 spring.redis.port=6379

代码如下:

@Configuration
public class RedisConfig {

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

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


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

    @Bean
    RedisTemplate<String, Object> redisTemplate() {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
        redisTemplate.setConnectionFactory(jedisConnectionFactory());
        return redisTemplate;
    }

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

主机名可以读取。 我无法读取redis端口的int值,它总是在抱怨bean的创建。

我也尝试在字符串中获取值:

@Value("${spring.redis.port}")
private String redisPortStr;

然后在Bean中我尝试做:

Integer.parseInt(redisPortStr)

在这种情况下,我有一个NumberFormatException。

错误是: Bean初始化失败;嵌套的异常是org.springframework.beans.TypeMismatchException:无法将类型“ java.lang.String”的属性值转换为属性“ integer”的必需类型“ int”;嵌套的异常是java.lang.NumberFormatException。

我有两个问题:

  1. 如何读取端口名的整数值?

  2. 我知道有人问here,但是解决方案没有帮助:

我在那里看到他们使用

@PropertySource("application.properties") 

加上

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

豆。 我已经添加了注释,但是存在相同的问题。 (尽管,添加注释对我来说不是一个解决方案,因为我们根据环境使用不同的属性文件,因此,如果可以避免的话,这样做会很有帮助)

我也应该添加@Bean         公共静态PropertySourcesPlaceholderConfigurer还是没有必要?

谢谢

0 个答案:

没有答案