小编Ago*_*eca的帖子

Grails:使用config.groovy中定义的值初始化静态变量

如何static使用定义的值初始化变量config.groovy

目前我有这样的事情:

class ApiService {
    JSON get(String path) {
        def http = new HTTPBuilder("${grailsApplication.config.grails.api.server.url}")
        ...
    }
    JSON get(String path, String token) {
        def http = new HTTPBuilder("${grailsApplication.config.grails.api.server.url}")
        ...
    }
    ...
    JSON post(String path, String token) {
        def http = new HTTPBuilder("${grailsApplication.config.grails.api.server.url}")
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

我不想http在每个方法中定义变量(几个GET,POST,PUT和DELETE).

我希望将http变量作为static服务中的变量.

我尝试了这个没有成功:

class ApiService {

    static grailsApplication
    static http = new HTTPBuilder("${grailsApplication.config.grails.api.server.url}")

    JSON get(String path) {
        http.get(...)
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到Cannot get property 'config' …

grails groovy spring static code-injection

5
推荐指数
1
解决办法
5882
查看次数

Groovy:找不到'子类'的匹配构造函数

我收到以下错误:

找不到匹配的构造函数:org.crawler.CrawlerUtils $ fetch(org.series.crawler.site.SubSiteA).

我正在尝试使用线程.我只使用过一次线程,而我正在努力做到和我在其他项目中做的一样.

我有:

Class CrawlerUtils {
    public static void crawlSites(List<Site> sites) {
        def pool = Executors.newFixedThreadPool(MAX_THREADS)
        def ecs = new ExecutorCompletionService<Void>(pool);
        sites.each { ecs.submit(new fetch(it), Void) }
        sites.each { ecs.take().get() }
        pool.shutdown()
    }

    class fetch implements Runnable {
        Site site
        fetch(Site site) {
            this.site = site
        }
        public void run() {
            site.parse()
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我试过这些(uglies)方法:

  • 创建一个接口(使用的ISite网站,而不是网站的网站获取构造函数)
  • fetch类中的每个子类中放置一个构造函数
  • 在每个调用super()的子类中放置一个构造函数

任何的想法?

groovy multithreading constructor subclass

1
推荐指数
1
解决办法
1140
查看次数