2

我能够从 Config.groovy 定义服务 bean 的属性。

引用书 Grails 2 权威指南

清单 10-6。使用 Config.groovy 配置 Bean

beans {
    albumArtService {
        artworkRequestUrl = 'http://itunes...'
    }
}

这种方法的一个优点是,由于 Config.groovy 提供的功能,您可以轻松地指定每个环境的值,而不是将值硬编码到 AlbumtArtService 类中。使用该配置代码,可以从 AlbumArtService 类中删除硬编码值。该属性仍需要声明为类中的字段,但不应分配值。框架将负责使用 Config.groovy 中指定的值初始化属性

在 Grails 2 中,我已经定义了服务 bean 的属性,如上所述。

现在在 Grails 3 中,我尝试在 application.ml 文件中定义服务属性:

environments:
    development:
        beans:
            transactionalMailService:
                mandrillApiKey: XAPIKEYVALUEX
            shareWithShoptimixUseCaseService:
                appStore: https://itunes/myapp
        grails:
            serverURL: http://localhost:8080
        dataSource:
            driverClassName: org.postgresql.Driver
            dialect: org.hibernate.dialect.PostgreSQL9Dial

    ....
    ...
    ..
    .

然后在我的服务中:

class TransactionalMailService {

    def mandrillApiKey

    ....
    ...
    ..
    .
}

该属性没有被设置。知道如何在 Grails 3 中执行此操作吗?

4

2 回答 2

1

我有一个解决方案,但对我来说它仍然是一种解决方法。

我喜欢在 Grails 2 中设置控制器和服务 bean 属性的方式。但是由于无法让它在 Grails 3 中以相同的方式工作,我选择在Bootstrap.groovy中设置属性

def init = { servletContext ->
        myService.someProperty = 'some value'
...
}

我不认为这是答案,但它确实有效。

于 2015-08-02T19:28:12.367 回答
0

您需要将多个文档放入同一个 YML 文件中。

beans:
   transactionMailService:
      mandrilApiKey: real key
---
spring:
    profiles: development
beans:
      transactionMailService:
        mandrilApiKey: dev key

这是(我认为)因为bean是由spring配置的

于 2015-09-13T08:35:07.013 回答