从我的控制器我想基于参数动态选择服务.
目前我有一个基本服务和一些其他服务,可以扩展这个基本服务.基于参数,我调用一个类,该类根据param创建一个bean名称,并最终调用以下内容:
import org.codehaus.groovy.grails.web.context.ServletContextHolder as SCH
import org.codehaus.groovy.grails.web.servlet.GrailsApplicationAttributes as GA
class Resolver {
def ctx
def getBean(String beanName) {
if(!ctx) {
ctx = SCH.servletContext.getAttribute(GA.APPLICATION_CONTEXT)
}
return ctx."${beanName}"
}
Run Code Online (Sandbox Code Playgroud)
}
这将返回我想要的服务.但是我觉得这样做很脏.有没有人有更好的方法来处理基于某些参数获取服务(或任何其他bean)?
谢谢.
使用Spock 0.7和Grails 2.04.试图建立一个测试环境.我需要一些关于测试对象列表的帮助.
我有一个位置对象列表.我想测试每个对象的日期.我正在迭代但不确定如果日期不相等,测试会如何失败.有没有一种好方法来测试列表中的对象?我在下面列出了我的代码块.
then:
weatherList != null
weatherList.empty != null
weatherList.size() == 3
weatherList.each {
Calendar today = Calendar.getInstance();
today.clearTime()
if(it.forecastDate != today) {
return false
}
}
Run Code Online (Sandbox Code Playgroud) 我尝试使用Grails的最新石英插件:quartz:1.0.1.
如果我离开jdbcStore = false,它会工作,如果我设置为true则失败.QuartzConfig.groovy:
quartz {
autoStartup = true
jdbcStore = true
waitForJobsToCompleteOnShutdown = true
exposeSchedulerInRepository = false
props {
scheduler.skipUpdateCheck = true
}
}
Run Code Online (Sandbox Code Playgroud)
这是属性文件:
org.quartz.scheduler.instanceName reporting_test
org.quartz.scheduler.instanceId AUTO
org.quartz.threadPool.class org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount 5
org.quartz.threadPool.threadPriority 5
org.quartz.jobStore.misfireThreshold 60000
org.quartz.jobStore.class org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.useProperties false
org.quartz.jobStore.tablePrefix QRTZ_
org.quartz.jobStore.isClustered true
org.quartz.jobStore.clusterCheckinInterval 5000
org.quartz.plugin.shutdownhook.class org.quartz.plugins.management.ShutdownHookPlugin
org.quartz.plugin.shutdownhook.cleanShutdown true
Run Code Online (Sandbox Code Playgroud)
我一直试图尝试数据源设置,因为我更喜欢使用我在Datasource.groovy中设置的默认DS.无论数据源的设置如何,我仍然会在启动时收到以下错误消息.
2013-12-18 13:43:14,693 [localhost-startStop-1] ERROR context.GrailsContextLoader - Error initializing the application: org.quartz.impl.jdbcjobstore.LockException: Failure obtaining db row lock: Line 1: FOR UPDATE clause allowed only for DECLARE …Run Code Online (Sandbox Code Playgroud)