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