【问题标题】:Access variable from config.groovy( in conf directory) inside a quartz job从石英作业中的 config.groovy(在 conf 目录中)访问变量
【发布时间】:2014-12-13 04:59:52
【问题描述】:

我在 config.groovy 中有一个哈希图,我想从 groovy 中的 Quartz Job 访问它

Map<String,Map<String, String>> projectname.config.Map1 = new HashMap<String, Map<String, String>>();

我想在下面的 Quartz Job 中访问:

import projectname.grails-app.conf.*;

class TrialJob {

    static triggers = {            
        simple repeatInterval: 10000l // execute job once in 5 seconds          
    }

    def execute() {

        def Application

        Map<String,Map<String, String>> Holder = Application.projectname.config.Map1
        log.info()        
    }
}

【问题讨论】:

  • 依赖注入对这样的方法变量没有意义——它们必须是字段或方法,以便在类外可见。

标签: grails groovy config quartz-scheduler


【解决方案1】:

如果您在Config.groovy 中声明地图

projectname.config.Map1 = []

(大概你还想在地图中放一些东西),那么你应该能够从你的工作类中检索它,如下所示

import org.codehaus.groovy.grails.commons.GrailsApplication

class TrialJob {
    GrailsApplication grailsApplication

    static triggers = {            
        simple repeatInterval: 10000l // execute job once in 5 seconds          
    }

    def execute() {
        Map<String,Map<String, String>> map = grailsApplication.config.projectname.config.Map1     
    }
}

【讨论】:

  • 在运行 grails run-app 时让我无法解析类 GrailsApplication
  • 你需要导入它(见上)
  • 嗨 Dónal..它现在没有给出编译错误,所以我认为它可以访问它,但是当我尝试在 config.groovy 中打印一些其他字符串变量 String str ="XYZ" 和尝试使用 log.info(grailsApplication.config.projectname.str) 在 Quartz 作业的 execute() 方法中打印它,它不打印任何东西?我尝试将其分配给变量并打印,但也无法打印...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-10
  • 1970-01-01
相关资源
最近更新 更多