여기 내 문제가 있습니다. @Scheduled
내 스프링 부트 응용 프로그램에서 몇 가지 일반 작업을 수행하기 위해 몇 가지 방법 위에 사용 하고 있습니다.
일정을 구성하기 위해 다음과 같이 fixedDelayString
& initialDelayString
인수를 @Scheduled
사용합니다.
@Scheduled(
initialDelayString = "${my.wanted.delayInSeconds}",
fixedDelayString = "${my.wanted.delayInSeconds}"
)
그게 제대로 작동합니다.
내가 지금 가지고있는 문제는 응용 프로그램에 대한 속성 파일이입니다 필요 로 구성 등록 정보를 넣어 :
my.wanted.delayInSeconds=10
예를 들어 kebab-case와 같은 스프링 속성에 대해 다른 지원되는 경우를 사용하는 경우 :
my.wanted.delay-in-seconds=10
다음 예외와 함께 응용 프로그램이 부팅되지 않습니다.
Caused by: java.lang.IllegalStateException: Encountered invalid @Scheduled method 'myMethod': Could not resolve placeholder 'my.wanted.delayInseconds' in value "${my.wanted.delayInSeconds}"
그 값이 정의되지 않았고 스프링이 fixedDelayString
& initialDelayString
자리 표시 자에 대한 변환을 수행하지 않는 것 같기 때문에 의미가 있습니다 .
문제는 이것이 정말 깨지기 쉽다는 것입니다. 나는 일반적인 @ConfigurationProperties
수업에서도 같은 속성을 읽고 있습니다. 그래서 IntelliJ는 속성 파일 즉 .NET에서 케밥 케이스 버전을 사용하도록 계속 제안합니다 my.wanted.delay-in-seconds
. 그리고 나는 동의합니다-거기에서 읽는 것이 더 쉽습니다. 하지만 그렇게하면 앱이 부팅되지 않습니다.
그래서 제 질문은 :
- 어느 쪽이든, 케밥 케이스도 작동하도록 Spring이 일반적인 변환을 수행합니까?
- 또는 속성을 직접 사용하는 대신 구성 속성 클래스에서 지연 문자열을 제공 하시겠습니까?
감사!