美文网首页
jvm学习笔记之问题

jvm学习笔记之问题

作者: __夏天__ | 来源:发表于2018-09-20 16:41 被阅读0次

    问题场景:如果有10个web应用程序都是用spring进行管理,可以把spring放在comon或者shared目录下让这些程序共享。Spring类要对用户程序的类进行管理,自然要能访问到用户程序的类,而用户的程序显然是放在/WebApp/WEB-INF目录中的,那么被CommonClassloader或SharedClassloader加载的spring如何访问不在其加载范围内的用户程序?
    答案: 使用线程上下文加载器。spring加载类所用的classloader都是通过Thread.currentThread().getContextClassLoader()来获取的,而当线程创建时会默认 setContextClassLoader(AppClassLoader),即spring中始终可以获取到这个AppClassLoader(在tomcat里就是WebAppClassLoader)子类加载器来加载bean,以后任何一个线程都可以通过getContextClassLoader()获取到WebAppClassLoader来getbean了。
    补充:common,shared/,server目录是tomcat6.x前的目录,在tomcat6.x 后就把这三个目录合并成一个/lib。

    相关文章

      网友评论

          本文标题:jvm学习笔记之问题

          本文链接:https://www.haomeiwen.com/subject/skennftx.html