Grails で war ファイルを再構築せずに外部構成ファイル (例: config-ex.groovy
、 ) を更新する方法は?config-ex.properties
アプリケーション サーバーを再起動すると、外部構成ファイルからの新しい更新が適用されます。
Grails で war ファイルを再構築せずに外部構成ファイル (例: config-ex.groovy
、 ) を更新する方法は?config-ex.properties
アプリケーション サーバーを再起動すると、外部構成ファイルからの新しい更新が適用されます。
外部 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))
}
管理者で保護されたコントローラーに上記のコードがあります。
これのために家を回った、ありがとうグレッグ
サービスまたは 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))
}