如何从应用程序定义服务Bean的属性.3.在Grails中使用



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

引用Book The Definitive Guide to Grails 2

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

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

这种方法的一个优点是,由于提供的特性通过配置。在Groovy中,您可以轻松地指定每个环境的值而不是将值硬编码到AlbumtArtService类中。与配置代码到位后,可将硬编码值从表单中移除AlbumArtService类。属性仍然需要声明为类中的一个字段,但不应该被赋值。该框架将照顾初始化属性与指定的值在Config.groovy

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

现在在Grails 3中,我尝试在应用程序中定义服务属性。毫升文件:

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

我有一个解决方案,但对我来说这仍然是一个变通。

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

中设置属性。
def init = { servletContext ->
        myService.someProperty = 'some value'
...
}

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新