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
}
但我还是想知道为什么,有什么想法吗