相关疑难解决方法(0)

将grails应用程序配置注入服务

我正在创建一个grails服务,它将通过Java库与第三方REST API进行交互.Java库需要通过URL,用户名和密码来获取REST API的凭据.

我想将这些凭据存储configuration/Config.groovy在一起,使它们可用于服务,并确保在服务需要它们之前可以使用凭据.

我很欣赏grailsApplication.config控制器可以使用,并且通过服务方法可以向服务提供相关的配置值,例如:

package example

class ExampleController {

    def exampleService

    def index = { }

    def process = {
        exampleService.setCredentials(grailsApplication.config.apiCredentials)
        exampleService.relevantMethod()
    }
}
Run Code Online (Sandbox Code Playgroud)


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();
    }
}
Run Code Online (Sandbox Code Playgroud)

我觉得这种方法有点缺陷,因为它取决于控制器调用setCredentials().将凭证自动提供给服务将更加健壮.

这两个选项中的任何一个都是可行的(我目前对grails不够熟悉):

  1. grailsApplication.config.apiCredentials在创建服务时注入控制器中的服务?

  2. 在服务上提供某种形式的构造函数,允许在实例化时将凭据传递给服务吗?

将凭证注入服务是理想的.怎么可以这样做?

grails grails-controller

37
推荐指数
2
解决办法
3万
查看次数

标签 统计

grails ×1

grails-controller ×1