在 Spring 中使用 Java 类 @Value('#{SPEL})
Using Java classes inside Spring @Value('#{SPEL})
我想将 属性 值解析为自定义对象。
例子;我有 application.properties;说
rules.peakHours.weekday.morning.start=10:15:45
并想将 属性 转换为 java LocalTime 对象。
@Configuration
public class RuleUtils {
@Value("#{localTime.parse(\"${rules.peakHours.weekday.morning.start}\")}")
public LocalTime weekDayMorningPeakStart;
我已经尝试了以下方法,但没有帮助。
@Bean
@ConfigurationProperties("localTime")
// @EnableConfigurationProperties(LocalTime.class)
public Class<LocalTime> getLocalTime() {
return LocalTime.class;
}
出现以下错误:
EL1008E: Property or field 'localTime' cannot be found on object of type 'org.springframework.beans.factory.config.BeanExpressionContext'
我尝试了 web 和 Whosebug,但没有得到具体的答案。
请帮忙。
我知道的唯一解决方法是构造函数注入;但这会使我的构造函数膨胀很多参数
@Configuration
public class RuleUtils {
public LocalTime weekDayMorningPeakStart;
public RuleUtils(@Value("${rules.peakHours.weekday.morning.start}") String weekDayMorningPeakStart) {
this.weekDayMorningPeakStart = LocalTime.parse(weekDayMorningPeakStart);
}
您可以使用表达式模板解析为 LocalTime,如 docs
中所示
@Value("#{ T(java.time.LocalTime).parse('${rules.peakHours.weekday.morning.start}')}")
private LocalTime localTime;
我想将 属性 值解析为自定义对象。 例子;我有 application.properties;说
rules.peakHours.weekday.morning.start=10:15:45
并想将 属性 转换为 java LocalTime 对象。
@Configuration
public class RuleUtils {
@Value("#{localTime.parse(\"${rules.peakHours.weekday.morning.start}\")}")
public LocalTime weekDayMorningPeakStart;
我已经尝试了以下方法,但没有帮助。
@Bean
@ConfigurationProperties("localTime")
// @EnableConfigurationProperties(LocalTime.class)
public Class<LocalTime> getLocalTime() {
return LocalTime.class;
}
出现以下错误:
EL1008E: Property or field 'localTime' cannot be found on object of type 'org.springframework.beans.factory.config.BeanExpressionContext'
我尝试了 web 和 Whosebug,但没有得到具体的答案。 请帮忙。
我知道的唯一解决方法是构造函数注入;但这会使我的构造函数膨胀很多参数
@Configuration
public class RuleUtils {
public LocalTime weekDayMorningPeakStart;
public RuleUtils(@Value("${rules.peakHours.weekday.morning.start}") String weekDayMorningPeakStart) {
this.weekDayMorningPeakStart = LocalTime.parse(weekDayMorningPeakStart);
}
您可以使用表达式模板解析为 LocalTime,如 docs
中所示@Value("#{ T(java.time.LocalTime).parse('${rules.peakHours.weekday.morning.start}')}")
private LocalTime localTime;