我想在应用程序中使用外部配置。我使用了邮件插件,并希望将其配置存储在外部.properties文件中。我更改了Config.groovy,因此现在它在USER_HOME/.grails/APP_NAME-configuration.properties下查找外部配置:
environments {
development {
grails.logging.jul.usebridge = true
if (new File("${userHome}/.grails/${appName}-config.properties").exists()) {
println "*** User defined config ***"
grails.config.locations = ["file:${userHome}/.grails/${appName}-config.properties"]
}
}
.....
}
如您所见,存在if语句,该语句测试配置文件是否存在。它存在,所以每次我看到“
*用户定义的配置*
“应用程序启动时的消息。
我正在开发模式下运行应用程序。我的邮件插件配置完成后:
grails {
mail {
host = grailsApplication.config['mail']['host']
port = grailsApplication.config['mail']['host']
username = grailsApplication.config['mail']['username']
password = grailsApplication.config['mail']['password']
props = ["mail.smtp.auth": "true",
"mail.smtp.socketFactory.port": "465",
"mail.smtp.socketFactory.class": "javax.net.ssl.SSLSocketFactory",
"mail.smtp.socketFactory.fallback": "false"]
}
}
当我试图用电子邮件插件发送消息时,电子邮件插件的配置似乎没有初始化-用户名,密码=null,主机,端口具有默认值(localhost和-1)。所以在我看来,config.properties文件根本没有加载。我决定检查config.properties是否已加载,并发现grailsApplication.config对象包含我在config.proproperties中定义的所有财产:mail.host、mail.port、mail.username、mail.password。我检查了是否可以使用grailsApplication.config['property']['name']表达式(在调试模式下)获取相应的财产。这个表达式为所有mail.host、mail.port、mail.username和mail.password提供了正确的值。我还尝试只使用grailsApplication.config['property.name'](带有一对括号和'.'),但这个变体不起作用。
有人能帮我处理这种情况吗?我花了将近3次时间尝试不同的变体,但仍然没有解决方案。非常感谢。