Play 框架的类增强 Enhancement


Play plug-in (比如play.PlayPlugin的子类) 可以包含‘enhancers’,以便于在运行时修改应用程序库,以增加功能。这就是play一些神奇的地方。

内建的play.CorePlugin使用enhancers(play.classloading.enhancers包)来动态添加代码到你的应用程序里:

  • ContinuationEnhancer –为控制器类添加continuations支持
  • ControllersEnhancer – 让控制器的action方法实现线程安全,还可以为方法调用添加HTTP跳转功能
  • LocalvariablesNamesEnhancer – 跟踪控制器里的本地变量名称
  • MailerEnhancer – 设置play.mvc.Mailer子类
  • PropertiesEnhancer – 把所有的应用程序类转换到可用的JavaBeans(其中的属性是基于域的)
  • SigEnhancer – 为每个类的签名计算一个唯一的哈希值,以便自动加载

另外,play.db.jpa.JPAPlugin增强了play.db.jpa.JPABase的子类,提供了更方便的jpa查询方法。这个一般用于play.db.jpa.Model的子类,作为应用程序的model类。如果这些类作为play.db.jpa.GenericModel的子类,会存在一定问题。
要想添加自己的java增强特性,在插件的 enhance(ApplicationClass applicationClass)  方法里使用 play.classloading.enhancers.Enhancer 的子类。


前一篇:
后一篇:

发表评论