在grails 2.3.2中自定义ENV的Environment.executeForCurrentEnvironment错误?

时间:2017-04-11 12:28:57

标签: spring grails groovy

根据this question及其回复,我决定使用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进行调试时,我感到很惊讶,我发现了这个:

debuger in prod env

使用哪个-Dgrails.env设置环境来运行应用并不重要。它总是首先为我的自定义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
}

但我仍然想知道为什么,任何想法?

0 个答案:

没有答案