Play源码深入之七:Play的MVC实现
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 整体来说,Play1.x是一个较完善的框架,各种功能都一应俱全,有点像句老话“麻雀虽小五脏俱全”哈。虽没有Struts、SpringMVC的大名气,但是使用起来,相当顺手。本文将深入Play1.x的MVC,也整合前面各方知识。 在new一个Play项目之后,都会有models、views、controllers三个文件夹,正好对应MVC,而且每类文件还必须放对地方。 这里要讲的是Play框架层面上,对MVC做的工作: M:Model(模型) ,在Model上,Play对每个Model进行了增强,在PlayPlugin中,有enhaner事件,每个插件都可以对Model进行增强,触发的时机在play.Invoker:run()中,调用init方法,检测play代码是否有变化,有变化就会发出增强事件,位置在play.classloading.ApplictionClasses:enhance()方法中。响应事件的有CorePlugin和JPAPlugin,JPAPlugin在前文已经说过,是织入JPA支持方法,而CorePlugin的enhaner有多个增强类,全在play.classloading.enhancers包中。 Model采用的ActiveRecord比POJO/DAO/Service高明