我能够从Config.groovy定义服务bean的属性。
引用Book The Definitive Guide to Grails 2
清单10 - 6。使用Config.groovy配置bean
beans {
albumArtService {
artworkRequestUrl = 'http://itunes...'
}
}
在Grails 2中,我如上所述定义了服务bean的属性。这种方法的一个优点是,由于提供的特性通过配置。在Groovy中,您可以轻松地指定每个环境的值而不是将值硬编码到AlbumtArtService类中。与配置代码到位后,可将硬编码值从表单中移除AlbumArtService类。属性仍然需要声明为类中的一个字段,但不应该被赋值。该框架将照顾初始化属性与指定的值在Config.groovy
现在在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配置的