Spring Grails2.3.2中自定义环境的Environment.executeForCurrentEnvironment bug?
根据其响应,我决定使用Spring Grails2.3.2中自定义环境的Environment.executeForCurrentEnvironment bug?,spring,grails,groovy,Spring,Grails,Groovy,根据其响应,我决定使用Environment.executeForCurrentEnvironment根据环境注入bean。这是我的代码: Environment.executeForCurrentEnvironment { development { // In development we use DevelopmentEmailer as implementation of emailer. springConfig.addAlias 'emaile
Environment.executeForCurrentEnvironment
根据环境注入bean。这是我的代码:
Environment.executeForCurrentEnvironment {
development {
// In development we use DevelopmentEmailer as implementation of emailer.
springConfig.addAlias 'emailer', 'developmentEmailer'
}
devReport {
// In custom Env we use DevelopmentEmailer as implementation of emailer.
springConfig.addAlias 'emailer', 'developmentEmailer'
}
production {
springConfig.addAlias 'emailer', 'emailer'
}
}
devReport是我的定制环境
但当我使用env=PROD进行调试时,我发现了以下情况,这让我感到惊讶:
我使用哪个-Dgrails.env来设置运行应用程序的环境并不重要。它总是先为我的自定义环境设置别名(稍后,在下一步中也为prod设置别名并更正错误的别名)。但问题仍然存在
解决方案
解决方案很简单,只需使用以下方法:
switch(Environment.current.name) {
case 'development':
springConfig.addAlias 'emailer', 'developmentEmailer'
break
case 'devReport':
springConfig.addAlias 'emailer', 'developmentEmailer'
break
case 'production':
springConfig.addAlias 'emailer', 'emailer'
break
}
但我还是想知道为什么,有什么想法吗