Java 何时在webapplications中使用Thread.currentThread().getContextClassLoader()
嗨,有人能告诉我什么时候使用Java 何时在webapplications中使用Thread.currentThread().getContextClassLoader(),java,jakarta-ee,Java,Jakarta Ee,嗨,有人能告诉我什么时候使用Thread.currentThread().getContextClassLoader() 在web应用程序中。请给我一些现实生活中的例子。请不要将其标记为重复问题(我的问题是何时使用Thread.currentThread().getContextClassLoader(),而不是加载属性文件)。我浏览了很多网站,但没有得到正确的答案。首先,请注意,此方法与JavaEE无关,它是JavaSE的一种方法,因此它不是仅用于web应用程序的方法,而是可能用于任何Java
Thread.currentThread().getContextClassLoader()
在web应用程序中。请给我一些现实生活中的例子。请不要将其标记为重复问题(我的问题是何时使用Thread.currentThread().getContextClassLoader(),而不是加载属性文件)。我浏览了很多网站,但没有得到正确的答案。首先,请注意,此方法与
JavaEE
无关,它是JavaSE
的一种方法,因此它不是仅用于web应用程序的方法,而是可能用于任何Java应用程序的方法
我们通常将此方法用于Thread.currentThread().setContextClassLoader(ClassLoader)
,以检查和/或更改调用线程的上下文ClassLoader
因此,通常假设您正在编写一个Java应用程序,该应用程序需要一个自定义的类加载器
,该加载器从特定文件夹和/或jar文件加载类,而这些文件夹和/或jar文件最初不在类路径上,您可以使用这些方法更改上下文ClassLoader
并恢复以前的CL。这将允许您的代码访问以前无法从当前上下文CL访问的类,因为它们最初不在类路径上
下面是您的代码的外观:
// The previous context ClassLoader
final ClassLoader contextCL = Thread.currentThread().getContextClassLoader();
try {
// Set my custom ClassLoader to make my classes accessible
Thread.currentThread().setContextClassLoader(myCustomCL);
// Execute some code here that will be able to access to classes or resources from
// my specific folders and/or jar files
} finally {
// Restore the previous CL
Thread.currentThread().setContextClassLoader(contextCL);
}