Java Hibernate搜索:静态块调用版本#touch()的目的是什么
我正在研究Hibernate搜索的源代码,无意中发现了一段我不太理解的代码 有一个静态块调用org.hibernate.search.engine.Version类的静态方法。我怀疑这可能与JIT有关,但不确定如何 你能解释一下吗Java Hibernate搜索:静态块调用版本#touch()的目的是什么,java,hibernate,hibernate-search,Java,Hibernate,Hibernate Search,我正在研究Hibernate搜索的源代码,无意中发现了一段我不太理解的代码 有一个静态块调用org.hibernate.search.engine.Version类的静态方法。我怀疑这可能与JIT有关,但不确定如何 你能解释一下吗 public class ImmutableSearchFactory implements ExtendedSearchIntegratorWithShareableState, WorkerBuildContext { static {
public class ImmutableSearchFactory implements ExtendedSearchIntegratorWithShareableState, WorkerBuildContext {
static {
Version.touch();
}
版本类别:
public final class Version {
private Version() {
//now allowed
}
public static String getVersionString() {
return Version.class.getPackage().getImplementationVersion();
}
static {
LoggerFactory.make( MethodHandles.lookup() ).version( getVersionString() );
}
public static void touch() {
}
}
这里是指向的链接,如果
Version
类已加载,Version.touch()代码>不会做任何事情
如果未加载Version
类,Version.touch()
将触发加载,这反过来将触发版本
类中以下静态代码块的执行:
static {
LoggerFactory.make( MethodHandles.lookup() ).version( getVersionString() );
}
。。。它将记录Hibernate搜索版本
所以调用Version.touch()代码>仅用于确保在Hibernate搜索引导之前记录Hibernate搜索版本