Из моего контроллера я хотел бы динамически выбирать услугу на основе параметра.
В настоящее время у меня есть базовая услуга и некоторые другие сервисы, которые обеспечивают эту базовую услугу. На основе параметра я вызываю класс, который создает имя 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) на основе некоторого параметра?
Спасибо.