コントローラーから、パラメーターに基づいてサービスを動的に選択したいと思います。
現在、私は基本サービスと、この基本サービスを拡張する他のいくつかのサービスを持っています。パラメータに基づいて、パラメータに基づいて 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) を取得するより良い方法はありますか?
ありがとうございました。