如何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' …
我收到以下错误:
找不到匹配的构造函数: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)方法:
任何的想法?