Я создаю сервис grails, который будет взаимодействовать со сторонним REST API через библиотеку Java.Для библиотеки Java требуются учетные данные для API REST с помощью 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):
InjectgrailsApplication.config.apiCredentials
в службу в контроллере при создании службы?
Предоставить некоторую форму конструктора в службе, которая позволяет передавать учетные данные в службу во время создания экземпляра?
Внедрение учетных данных в сервис идеально.Как это можно сделать?