"Java面试题:SpringMVC原理与ThreadLocal应用"

需积分: 5 0 下载量 113 浏览量 更新于2024-01-11 收藏 31KB DOCX 举报
Java面试题.docx中介绍了SpringMVC的运行原理,包括以下几个步骤:客户端请求首先提交到DispatcherServlet,然后由DispatcherServlet控制器查询HandlerMapping,找到并分发到指定的Controller中,Controller调用业务逻辑处理后,返回ModelAndView,最后DispatcherServlet查询一个或多个ViewResolver视图解析器,找到ModelAndView指定的视图。 ThreadLocal是线程变量副本的概念,Synchronized可以实现内存共享,而ThreadLocal则为每个线程维护一个本地变量。它用于线程间的数据隔离,为每一个使用该变量的线程提供一个副本,每个线程都可以独立地改变自己的副本,而不会和其他线程的副本冲突。ThreadLocal类中维护一个Map,用于存储每一个线程的变量副本。在Spring中,ThreadLocal在管理Request作用域中的Bean、事务管理、任务调度、AOP等模块中都发挥着巨大的作用。大部分Bean都可以声明为Singleton作用域,采用ThreadLocal进行封装,使得有状态的Bean能够以Singleton的方式在多线程中正常工作。 另外,面试题还涉及到Java的GC(垃圾回收)机制。GC发生的时机是在内存不足时,GC会对堆内存中的垃圾对象进行回收。GC对什么东西做了什么事情,取决于具体的GC算法和配置。在面试题中,提到了新生代的GC机制,包括Eden区和两个Survivor区。新对象首先会被放入Eden区,当Eden区空间不足时,会进行一次Minor GC。Minor GC将不再使用的对象进行清理,并将存活的对象移动到Survivor区。如果Survivor区也不够存放,那么一部分对象将会被移动到老年代,而剩余的对象将会被清空。 综上所述,SpringMVC的运行原理是通过DispatcherServlet来控制请求的分发和处理,ThreadLocal是一种用于线程间数据隔离的机制,Java的GC机制是在内存不足时对垃圾对象进行回收。