Tomás Lin在其博客中公布了一套面试Grails开发人员的题目,本站将陆续公布问题的答案。今天公布的是工具/Shell部分的试题回答。
工具/Shell篇
- 描述一下Grails的console、shell和交互模式(interactive modes)的区别?
- console:在初始化的Grails环境中运行的Groovy图形控制台,启动方式:“grails console”;
- shell:在初始化的Grails环境中运行的Groovy Shell,启动方式:“grails shell”;
- 交互模式:以交互方式启动Grails CLI,类似在命令行下执行Grails命令,不同之处在于该模式只启动一次JVM,节省了每次执行Grails脚本时启动JVM的时间,同时它还使用JVM的JIT编译器优化Grails脚本,有效提升了需要反复执行的脚本(如单元测试)的执行速度。启动方式:“grails interactive”;
- 在Grails console中如何获得Spring bean?
Grails Console有一个绑定变量ctx,它指向ApplicationContext对象,使用如下代码即可获得Spring Bean:
ctx.getBean(beanId)
详情可参见本站的《如何在Grails Console中调用GetBean》。
【没弄明白原题的意思,故参考了Tomás Lin的答案】BootStrap.groovy中的内容不会执行;部分工程文件的改动会使Console重启,如Controller的变动不会引起重启,而Domain Class的文件则会。同时,Tomás的说重启时会造成原来输入的代码丢失,实际情况似乎不是这样,重启之后,原来输入的代码会被加载。但为了保险起见,如果代码太长了,最好还是保存在外部。
bug-report用于报告Bug,它仅将应用的源文件打包(不包括Jar文件、静态资源等)生成带有时戳的ZIP文件,它向Grails JIRA报告问题非常有用。
Grails中自带的环境有:开发环境:development;产品环境:Production,测试环境:Test。
同时,Grails还允许自定义环境,在运行时则需要通过grails.env参数来告知当前环境。详情请参见本站Grails 1.2参考文档速读(2):配置基础和环境。
grails run-app -Dserver.port=port number或者使用grails.server.port配置。
run-war:将当前的应用程序打包成WAR,并在Jetty容器的8080端口运行应用。
run-app:在Jetty容器的8080端口运行应用。
使用create-script命令创建,比如:
//创建scripts/ExecuteReport.groovy grails create-script execute-report
_Events.groovy中可定义事件处理函数,它可以存放在插件的scripts目录下,或者用户目录的.grails/scripts/下。当事件发生时,会调用所有的_Events.groovy文件。详情请参见本站Grails 1.2参考文档速读(5):第4章。
使用verboseCompile:“grails compile -verboseCompile”,或者将grails.project.compile.verbose设置为true。

最新评论
9 周 6 小时之前
9 周 1 天之前
11 周 5 天之前
11 周 5 天之前
17 周 2 天之前
17 周 4 天之前
19 周 3 天之前
20 周 1 天之前
20 周 2 天之前
20 周 5 天之前