如何看待Grails的窗帘?

时间:2014-05-30 00:50:19

标签: grails

我正在阅读介绍Grails的书,我看到了这段代码:

if (session.user) { ... }

session是一个GrailsHttpSession,它扩展了HttpSession,两者都没有user属性。我想弄清楚设置/获取任意属性是如何工作的,所以我设置了一些断点,并在HttpSession后增强了ServletsGrailsPluginSupport后发现了一段时间。

我的问题是,设置断点并逐步执行代码是一种缓慢,强力的方法来发现Grails魔法是如何工作的。有没有更快,更有效的方法来发现Grails如何以及在哪里增强普通方法? (例如,我仍然不知道DomainEntity.findAllByInsertFieldHere在哪里实现,也不知道如何找到它。)

要清楚,我不是要求给鱼,我问的是如何钓鱼。

3 个答案:

答案 0 :(得分:1)

绝对查看Programming Grails by Burt Beckwith。描述说:

  

深入了解Grails架构并了解此应用程序的方式   框架发挥其魔力。由Grails的核心开发人员撰写   团队,这个实用指南带你幕后来揭示   2.0功能集的内部工作原理。

拍好,这正是你要找的! :)

答案 1 :(得分:1)

虽然在那里阅读各种书籍还有很多东西要说,但实际上他们中没有一个能够给你APIsource code的Grails视图。

花时间浏览Grails和Spring的API,并了解源代码中的实现方式。

这将使您最好地理解'内在的东西'。

答案 2 :(得分:1)

Groovy使用了很多元编程,每个类在元类中都有一个元类,你可以为类添加功能或修改功能,你甚至可以创建动态方法,例如findAllByInsertFieldHere没有确实存在,但是如果方法以findAllBy开头,则它使用函数的其余部分作为参数,在这种情况下insertFieldHere来创建查询。

请检查:http://groovy.codehaus.org/Groovy+Method+Invokation