2017-07-12 6 views
1

起動時に、アプリケーションの設定ファイルからいくつかのプロパティを読み込み、いくつかのドメインオブジェクトを作成し、いくつかの追加情報で設定を更新する必要があるプラグインがあります。しかし、doWithApplicationContextの間に利用可能なconfigオブジェクトは、実際のgrailsApplication.configオブジェクトではないようです。 MyPluginGrailsPlugin.groovyファイルに簡単な何かをしようとして例えばgrails 3 - プラグイン "doWithApplicationContext"中にgrails configを更新

、のような:

void doWithApplicationContext() { 
    grailsApplication.config.put('test', 'testValue') 
} 

は、設定を更新しません。

このプラグインがアプリケーションに含まれている場合、起動後の任意の時点で、grailsApplication.config.getProperty('test')はnullを返します。

プラグインの起動時に設定マップを更新するにはどうすればよいですか?

注:grails 2ではこれがうまく機能しませんでした。

答えて

1

このコードスニペットをMyPluginGrailsPlugin.groovyのdoWithApplicationContextに追加すると、新しいプロパティがアプリケーションのconfigオブジェクトに正常に追加されました。

追加の注意点としては
ConfigObject myConfigObject = new ConfigSlurper().parse(props) 
PropertySource propertySource = new MapPropertySource('grails.plugins.myPlugin', [:] << myConfigObject) 
def propertySources = grailsApplication.mainContext.environment.propertySources 
propertySources.addFirst propertySource 

:doWithApplicationContextの私のプラグインでは、このような設定オブジェクトを変更するには、Grailsの2で働いていた、もはやGrailsの3に

grailsApplication.config.merge(myConfigObject) 
grailsApplication.configChanged() 
の作品
関連する問題