我正在阅读介绍Grails的书,我看到了这段代码:
if (session.user) { ... }
session
是一个GrailsHttpSession
,它扩展了HttpSession
,两者都没有user
属性。我想弄清楚设置/获取任意属性是如何工作的,所以我设置了一些断点,并在HttpSession
后增强了ServletsGrailsPluginSupport
后发现了一段时间。
我的问题是,设置断点并逐步执行代码是一种缓慢,强力的方法来发现Grails魔法是如何工作的。有没有更快,更有效的方法来发现Grails如何以及在哪里增强普通方法? (例如,我仍然不知道DomainEntity.findAllByInsertFieldHere
在哪里实现,也不知道如何找到它。)
要清楚,我不是要求给鱼,我问的是如何钓鱼。
答案 0 :(得分:1)
绝对查看Programming Grails by Burt Beckwith。描述说:
深入了解Grails架构并了解此应用程序的方式 框架发挥其魔力。由Grails的核心开发人员撰写 团队,这个实用指南带你幕后来揭示 2.0功能集的内部工作原理。
拍好,这正是你要找的! :)
答案 1 :(得分:1)
虽然在那里阅读各种书籍还有很多东西要说,但实际上他们中没有一个能够给你API或source code的Grails视图。
花时间浏览Grails和Spring的API,并了解源代码中的实现方式。
这将使您最好地理解'内在的东西'。
答案 2 :(得分:1)
Groovy使用了很多元编程,每个类在元类中都有一个元类,你可以为类添加功能或修改功能,你甚至可以创建动态方法,例如findAllByInsertFieldHere
没有确实存在,但是如果方法以findAllBy
开头,则它使用函数的其余部分作为参数,在这种情况下insertFieldHere
来创建查询。