从我的控制器中,我想根据参数动态选择服务。
目前我有一个基础服务和一些其他服务来扩展这个基础服务。基于参数,我调用了一个类,该类确实基于参数创建了一个 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}"
}
}
这将返回我想要的服务。但是我觉得这样做很脏。有没有人有更好的方法来处理基于某些参数获取服务(或任何其他 bean)?
谢谢你。