5

Grails で war ファイルを再構築せずに外部構成ファイル (例: config-ex.groovy、 ) を更新する方法は?config-ex.properties

アプリケーション サーバーを再起動すると、外部構成ファイルからの新しい更新が適用されます。

4

3 に答える 3

3

外部 Grails 構成を次のように定義します。

grails.config.locations = ["file:some/path/to/Config.groovy"]

次に、実行時にそれらをリロードするには、次のようなコードを使用できます。

def config = grailsApplication.config
def locations = config.grails.config.locations

locations.each {
  String configFileName = it.split('file:')[0]
  config.merge(new ConfigSlurper().parse(new File(configFileName).text))
}

管理者で保護されたコントローラーに上記のコードがあります。

于 2012-11-26T19:45:17.710 に答える
1

これのために家を回った、ありがとうグレッグ

サービスまたは groovy src ファイルの場合は、次を使用できます。

import org.springframework.context.ApplicationContext
ApplicationContext ctx = (ApplicationContext) org.codehaus.groovy.grails.web.context.ServletContextHolder.getServletContext().getAttribute(org.codehaus.groovy.grails.web.servlet.GrailsApplicationAttributes.APPLICATION_CONTEXT);
def grailsApplication = ctx.getBean("grailsApplication")
ConfigObject config = ctx.getBean(GrailsApplication).config
def locations = config.grails.config.locations
locations.each {
   String configFileName = it.split("file:")[1]
   config.merge(new ConfigSlurper().parse(new File(configFileName).text))
}

また、通常コントローラーから拡張される抽象クラスの場合:

import grails.util.Holders
def config = Holders.config
def locations = config.grails.config.locations
locations.each {
  String configFileName = it.split("file:")[1]
  config.merge(new ConfigSlurper().parse(new File(configFileName).text))
 }
于 2013-10-09T11:36:02.777 に答える