Java 玩框架增强过程

Java 玩框架增强过程,java,playframework,playframework-1.x,Java,Playframework,Playframework 1.x,我一直在学习一部戏剧!框架模块,并希望扩展它,添加一些功能。我发现了一个从增强器(play.classloading.enhancers.Enhancer)扩展而来的类,但我不明白为什么要玩!采用这种模式 为什么要加载类并使它们的社区代码扩展像这样?我读过他们非常简单的解释哦,他们为什么这么做,我觉得自己像祖母一样被对待呵呵: 但这并没有像我想的那样起到作用。为什么我不能编写我的用户将使用预期功能扩展的类?在一些情况下,他们将不得不重新加载一些动态或特殊功能的类,好吧,但我的插件代码本质上是静态

我一直在学习一部戏剧!框架模块,并希望扩展它,添加一些功能。我发现了一个从增强器(play.classloading.enhancers.Enhancer)扩展而来的类,但我不明白为什么要玩!采用这种模式

为什么要加载类并使它们的社区代码扩展像这样?我读过他们非常简单的解释哦,他们为什么这么做,我觉得自己像祖母一样被对待呵呵:

但这并没有像我想的那样起到作用。为什么我不能编写我的用户将使用预期功能扩展的类?在一些情况下,他们将不得不重新加载一些动态或特殊功能的类,好吧,但我的插件代码本质上是静态的


有人知道他们为什么这么做吗?如果我被要求这么做的话?(在等待答案时测试它!)

字节码增强是一个工具游戏!用于扩展Java语言,并向应用程序代码中注入一些“神奇”的逻辑。一个示例是控制器的渲染方法增强,它使您能够编写以下代码:

public static void myAction() {
   String foo = "...";
   int bar = "...";
   render(foo, bar);
}
而不是

public static void myAction() {
   String foo = "...";
   int bar = "...";
   renderArgs.put("foo", foo);
   renderArgs.put("bar", bar);
   render();
}
所发生的是一个
LocalVariableEnhancer
将增强
myAction
方法,并生成从变量名到变量的映射。在
render
方法中,它将检查该映射并为您自动将变量放入renderrags


还有其他情况,如
get/set
方法生成和JPA模型的静态工厂方法等。
play morphia
等模块也大量使用字节码增强器。我们的目标是提供一种在纯Java语言框架内无法提供的终极应用程序开发体验,比如继承、接口等。

我已经得到了,但它应该被每个插件使用,或者在某些情况下被过度使用?不。不是所有插件都需要覆盖
PlayPlugin.enhanced
方法,因此,并非所有插件都需要
增强器的子类。