更改 application.yml 中的参数类型

问题描述 投票:0回答:1

我有 Spring 应用程序并尝试使用 Redis 缓存数据。对于此缓存,我尝试将 TTL 设置为 10 分钟,由于某种原因,我无法使用长类型,只能使用“PT10M”等格式。

我的 application.yml 如下所示:

cache:
    service-available-event:
        ttl: PT10M

配置类:

import org.springframework.cache.CacheManager;

@Configuration
@EnableCaching
public class RedisConfiguration {

    @Bean
    @ConfigurationProperties("cache.service-available-event")
    public CustomCacheConfig serviceAvailableEventCacheConfig() {
        return new CustomCacheConfig();
    }

    public class CustomCacheConfig extends CacheConfig {

        public void setTTL(Duration ttl) {
            super.setTTL(ttl.toMillis());
        }
    }
}

错误:

Description:

Failed to bind properties under 'cache.service-available-event.t-t-l' to long:

    Property: cache.service-available-event.t-t-l
    Value: "PT10M"
    Origin: class path resource [application.yml] - 62:14
    Reason: failed to convert java.lang.String to long (caused by java.lang.NumberFormatException: For input string: "PT10M")

Action:

Update your application's configuration

有没有办法将 application.yml 的格式从长格式更改为字符串?

java spring spring-boot redis
1个回答
0
投票

不可以,您无法更改

application.yml
中的类型。

您可以更改您提供的值,以便可以将其解释/解析为

long
,或者您可以更改代码以在读取您定义的属性时接受
String

Spring 可以使用

application.yml
文件中的值自动分配字段,如下所示:

    @Value("${your.property.key.}")
    private String propertyName;

这样就可以从

application.yml
中设置你想要解释的类型。

© www.soinside.com 2019 - 2024. All rights reserved.