如何从Grails 3中的application.yml定义服务Bean的属性?

时间:2015-06-03 15:34:22

标签: grails grails-3.0 grails-config

我能够从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中做到这一点吗?

2 个答案:

答案 0 :(得分:1)

我有一个solution,但对我而言,它仍然是一种解决方法。

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

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

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

答案 1 :(得分:0)

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

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

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