В Spring Boot (с Java) я обычно помещаю имена кеша в статические конечные строки, например:
public static final String MY_CACHE_NAME = "cache_name" @Cacheable(value = MY_CACHE_NAME)
Но, когда у меня есть класс java с этими именами кеша, и я пытаюсь использовать его в кеш-методе Kotlin, Eclipse говорит мне, что это не «константа времени компиляции». Есть ли способ решить это?
Вне затмения все идет хорошо …
Это довольно странно, это определенно должно работать. Вероятно, у вас проблема конфигурации. Убедитесь, что ваш плагин Kotlin и ваш проект используют одну и ту же версию Kotlin, разные версии часто приводят к ошибкам нечетного компилятора. Используйте последнюю версию в обоих местах, если это возможно.
Это пример кода, который я пробовал, который отлично работал на 1.1.50
(это вздор, но он компилируется):
MyConstants.java
public class MyConstants { public static final String MY_CACHE_NAME = "cache_name"; }
DemoApplication.kt
@SpringBootApplication class DemoApplication fun main(args: Array<String>) { SpringApplication.run(DemoApplication::class.java, *args) } @Cacheable(MyConstants.MY_CACHE_NAME) fun someFunction() {}