Я создаю службу grails, которая будет взаимодействовать со сторонним REST API через библиотеку Java. Библиотеке Java требуются учетные данные для REST API с помощью URL-адреса, имени пользователя и пароля.
Я хотел бы сохранить эти учетные данные в configuration / Config.groovy
, сделать их доступными для службы и убедитесь, что учетные данные доступны службе до того, как они потребуются.
Я ценю, что grailsApplication. config
доступен для контроллеров, и что через метод службы соответствующие значения конфигурации могут быть предоставлены службе, например:
package example
class ExampleController {
def exampleService
def index = { }
def process = {
exampleService.setCredentials(grailsApplication.config.apiCredentials)
exampleService.relevantMethod()
}
}
package example
import com.example.ExampleApiClient;
class ExampleService {
def credentials
def setCredentials(credentials) {
this.credentials = credentials
}
def relevantMethod() {
def client = new ExampleApiClient(
credentials.baseUrl,
credentials.username,
credentials.password
)
return client.action();
}
}
Я считаю, что этот подход немного ошибочен, поскольку он зависит от вызова контроллера setCredentials ()
. Автоматическое предоставление учетных данных службе было бы более надежным.
Является ли любой из этих двух вариантов жизнеспособным (в настоящее время я недостаточно знаком с grails):
Ввести grailsApplication.config.apiCredentials
в служба в контроллере при создании службы?
Предоставить некоторую форму конструктора службы, которая позволяет передавать учетные данные службе во время создания экземпляра?
Внедрение учетных данных в службу является идеальным. Как это можно было сделать?