Я разрабатываю свой первый плагин Grails. Он должен получить доступ к веб-сервису. Для плагина, очевидно, потребуется URL-адрес webservice. Каков наилучший способ настроить это без жесткого кодирования в классы Groovy? Было бы неплохо с другой конфигурацией для разных сред.Конфигурация плагина Grails
ответ
Если это единственный вариант конфигурации (чтение: один элемент), возможно, будет проще выполнить slurp в файле свойств. Если есть несколько вариантов конфигурации, и некоторые из них должны быть динамическими, я бы предложил сделать то, что делает плагин Acegi Security, - добавьте файл в /grails-app/conf/plugin_name_config.groovy.
Добавленный бонус заключается в том, что пользователь может выполнить groovy-код, чтобы вычислить их параметры конфигурации (намного лучше, используя файлы свойств), а также легко выполнять различные среды.
check out http://groovy.codehaus.org/ConfigSlurper, который является тем, что grails внутренне используют для slurp конфигураций, таких как config.groovy.
//e.g. in /grails-app/conf/MyWebServicePluginConfig.groovy
somePluginName {
production {
property1 = "some string"
}
test {
property1 = "another"
}
}
//in your myWebServicePlugin.groovy file, perhaps in the doWithSpring closure
GroovyClassLoader classLoader = new GroovyClassLoader(getClass().getClassLoader())
ConfigObject config
try {
config = new ConfigSlurper().parse(classLoader.loadClass('MyWebServicePluginConfig'))
} catch (Exception e) {/*??handle or what? use default here?*/}
assert config.test.property1.equals("another") == true
Возможно, вы захотите сохранить его просто (tm). Вы можете определить URL-адрес непосредственно в Config.groovy, включая настройки для каждого окружения, и получить доступ к нему из своего плагина по мере необходимости с помощью grailsApplication.config (в большинстве случаев) или объекта ConfigurationHolder.config (см. Далее details in the manual).
В качестве дополнительного бонуса этот параметр также может быть определен в стандартных файлах свойств Java или в других файлах конфигурации, указанных в grails.config.locations.
например. в Config.groovy
// This will be the default value...
myPlugin.url=http://somewhe.re/test/endpoint
environments {
production {
// ...except when running in production mode
myPlugin.url=http://somewhe.re/for-real/endpoint
}
}
позже, в услуге, предоставляемой плагином
import org.codehaus.groovy.grails.commons.ConfigurationHolder
class MyPluginService {
def url = ConfigurationHolder.config.myPlugin.url
// ...
}
- 1. Grails Jquery-интерфейс конфигурация плагина
- 2. Конфигурация для плагина grails-redis
- 3. Конфигурация времени плагина почты Grails
- 4. Конфигурация почтового плагина с использованием Grails 3
- 5. Конфигурация плагина
- 6. Конфигурация плагинов Grails 3
- 7. Grails Внешняя конфигурация Конфигурация System.getenv
- 8. grails 3 cache - конфигурация ehcache
- 9. Конфигурация автозагрузки плагина Composer
- 10. Конфигурация пути плагина Wordpress
- 11. TeamCity: Конфигурация плагина Gerrit
- 12. Конфигурация плагина maven tomcat
- 13. Конфигурация пользовательского плагина maven
- 14. Конфигурация плагина maven
- 15. Конфигурация плагина maven bundle
- 16. Конфигурация плагина изображения CKEditor
- 17. Конфигурация плагина ActiveMQ maven
- 18. Конфигурация настраиваемых кэшей Grails ehcache.xml
- 19. Конфигурация Grails log4j
- 20. Grails - конфигурация схемы
- 21. Grails внешняя конфигурация
- 22. Конфигурация сервера сервера Grails
- 23. Grails - конфигурация прокси
- 24. Конфигурация почтового порта Grails
- 25. Установка плагина Grails CXF
- 26. Загрузка плагина Grails
- 27. пружинные социальный Grails плагина
- 28. Ошибка плагина Grails Jasper
- 29. Grails - глобальная регистрация плагина
- 30. Использование grails-mail-плагина вне приложения Grails
Странная идея иметь отдельный конфигурационный файл только для одного свойства, 'Config.groovy' следует использовать для этого свойства. – tig
@tig AFAIK, 'Config.groovy' опущен, когда плагин упакован, а скорее для тестирования плагина, чем для его настройки, нет? – peterp