У меня есть плагин Grails (4.0.1), где я пытаюсь связать свойства способом Grails c.
Мой источник данных во время выполнения. groovy выглядит следующим образом:
dataSource {
dbCreate = 'none'
pooled = true
username = "root"
password = ""
dialect = UTF8MySQL5InnoDBDialect.name
driverClassName = "com.mysql.jdbc.Driver"
properties {
jmxEnabled = false
initialSize = 5
}
remoteDataSources {
disabled = false
urlGenerator = { String host ->
"jdbc:mysql://${host}:3306/myDb?characterEncoding=utf8"
}
}
}
Доступ к вышеуказанной конфигурации работает нормально с использованием методов Grails;
def dbConfig = grailsApplication.config.dataSource
String dbUrl = dbConfig.urlGenerator(thisHost)
Но когда я пытаюсь и использую подход Grails Agnosti c (Spring Boot), я не могу связать его;
@Value('${dataSource}')
private Map dataSource
Кажется, что доступ по отдельности работает;
@Value('${dataSource.remoteDataSources.disabled}')
private boolean disabled
Но главная проблема заключается в с закрытием;
@Value('${dataSource.remoteDataSources.urlGenerator}')
private Closure urlGenerator
В результате;
java .lang.IllegalStateException: Невозможно преобразовать значение типа 'java .lang.String' в требуемый тип 'groovy .lang.Closure': не найдено ни одного подходящего редактора или стратегии конвертации
Я не уверен, что то, что я пытаюсь сделать, возможно, но на всякий случай, если у кого-то есть идеи лучшего подхода или обходного пути, это было бы здорово!