我正在编写一些代码来将一些引导数据加载到我的Grails应用程序中.有些东西不能用于我正在尝试创建的类之一,因此能够以交互方式针对grails运行时环境运行该代码非常方便,我想知道是否有办法做到这一点.
我知道Grails控制台,但似乎没有加载我想要与之交互的自举数据.我也在调试时看到了这个线程 - 是否有任何IDE允许交互式shell进入运行时?似乎Debug Plugin计划提供这个,但还没有.
我发现这个脚本允许你从Grails上下文执行一个脚本,但我想要一些更具互动性的东西.
我在Grails 1.1上.
使用Grails控制台手动运行引导类,然后运行相关代码.
new BootStrap().init()
终于找到了我需要做的事情!
如果添加到引导程序中,则使用以下代码:
def init = {servletContext -> if (GrailsUtil.environment == GrailsApplication.ENV_DEVELOPMENT) { def appCtx = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext) def grailsApp = appCtx.getBean(GrailsApplication.APPLICATION_ID); Binding b = new Binding(); b.setVariable("ctx", appCtx); def console = new Console(grailsApp.classLoader, b); console.run() } }
当应用程序启动时,它还将打开一个Groovy控制台,它允许您以交互方式与域类进行交互.因此,例如,您可以添加新对象,然后在Web应用程序中查看它.