public abstract class MethodKeyBuilder extends Object
| 限定符和类型 | 类和说明 |
|---|---|
static class |
MethodKeyBuilder.FastMethodKeyBuilder
FastMethodKeyBuilder
targetClass、methodName、argTypes 的 hash 直接使用 String.hashCode()
String.hashCode() 会被缓存,性能更好
|
static class |
MethodKeyBuilder.StrictMethodKeyBuilder
StrictMethodKeyBuilder
targetClass、methodName、argTypes 三部分全部使用 fnv1a64 算法计算 hash
|
| 构造器和说明 |
|---|
MethodKeyBuilder() |
| 限定符和类型 | 方法和说明 |
|---|---|
static MethodKeyBuilder |
getInstance() |
abstract Long |
getMethodKey(Class<?> targetClass,
String methodName,
Class<?>[] argTypes)
生成指定 class、指定方法名、指定方法形参类型的 key 值,用于缓存
|
static void |
setMethodKeyBuilder(MethodKeyBuilder methodKeyBuilder)
切换到用户自定义 MethodKeyBuilder
|
static void |
setToStrictMethodKeyBuilder()
切换到 StrictMethodKeyBuilder
特别注意:
如果希望将 configEngine(Engine me) 中的 Engine 切换到 StrictMethodKeyBuilder,
需要在 YourJFinalConfig extends JFinalConfig 中利用如下代码块才能生效:
static {
MethodKeyBuilder.setToStrictMethodKeyBuilder();
}
原因是在 com.jfinal.core.Config 中 new Engine() 时 setToStrictMethodKeyBuilder()
方法并未生效,所以 extension method 生成 method key 时仍然使用的是 FastMethodKeyBuilder
以至于在运行时,使用 StrictMethodKeyBuilder 生成的 key 找不到 extension method
后续版本考虑在调用 setToStrictMethodKeyBuilder() 以后重新初始化一下 MethodKit 中的变量
原先的 static 初始化方式重构出 synchronized void init() 方法来方便调用
|
public abstract Long getMethodKey(Class<?> targetClass, String methodName, Class<?>[] argTypes)
public static MethodKeyBuilder getInstance()
public static void setToStrictMethodKeyBuilder()
特别注意:
如果希望将 configEngine(Engine me) 中的 Engine 切换到 StrictMethodKeyBuilder,
需要在 YourJFinalConfig extends JFinalConfig 中利用如下代码块才能生效:
static {
MethodKeyBuilder.setToStrictMethodKeyBuilder();
}
原因是在 com.jfinal.core.Config 中 new Engine() 时 setToStrictMethodKeyBuilder()
方法并未生效,所以 extension method 生成 method key 时仍然使用的是 FastMethodKeyBuilder
以至于在运行时,使用 StrictMethodKeyBuilder 生成的 key 找不到 extension method
后续版本考虑在调用 setToStrictMethodKeyBuilder() 以后重新初始化一下 MethodKit 中的变量
原先的 static 初始化方式重构出 synchronized void init() 方法来方便调用
public static void setMethodKeyBuilder(MethodKeyBuilder methodKeyBuilder)
Copyright © 2024. All rights reserved.