Java 面经之 Spring
[1]. Spring MVC工作流程说说?
-
Spring MVC的工作流程大概可以分为以下步骤:
-
用户通过浏览器向服务器发送请求。
-
请求会先到达Spring MVC的前端控制器(DispatcherServlet)。
-
DispatcherServlet收到请求后会调用处理器映射器(HandlerMapping),根据请求的URL找到对应的处理器(Handler),生成Handler对象以及处理器拦截器(HandlerIntercepter)一并返回给DispatcherServlet。
-
DispatcherServlet根据返回的信息选择合适的处理器适配器(HandlerAdapter)。
-
HandlerAdapter调用并执行Handler,Handler执行完成后,会给HandlerAdapter返回一个(数据和视图)ModelAndView对象。
-
HandlerAdapter又会将ModelAndView对象返回给DispatcherServlet。DispatcherServlet再将ModelAndView交给视图解析器(ViewResolver)进行解析,然后向DispatcherServlet返回具体的视图(View)。
-
DispatcherServlet对View进行渲染,将模型数据填充至视图中。
-
渲染后的视图由DispatcherServlet返回给浏览器,最终用户看到的是处理后的页面内容。
[2]. 说一下Spring AOP
Spring AOP允许在不改变目标对象代码的前提下向目标对象添加额外的行为或功能,有助于将横切关注点与业务逻辑分离,减少对业务代码的侵入,增强代码的可读性和可维护性。
它的实现主要是基于JDK动态代理和CGLIB代理这两种代理方式。在Spring中,使用@Aspect注解来定义一个切面,通过@Pointcut来指定切点,然后使用@Before、@After、@Around等注解来定义通知。
常见的使用场景有日志记录、事务管理、安全控制和性能监控。
[3]. IO和NIO的区别?
Java中的IO(Input/Output)和NIO(New Input/Output)是用于处理数据传输的两种不同的API。
IO是面向流的,以阻塞模式工作。NIO是面向缓冲区的,以非阻塞模式工作。
IO没有选择器机制,每个连接都需要一个线程来处理。NIO引入了选择器机制,一个线程可以处理多个连接。
IO适用于连接数量较少、对并发性能要求不高的场景。NIO适用于高并发、大数据量传输的场景。
[4]. 微服务知道吗?
微服务是一种软件架构设计模式,其中应用程序被分解为小型、自治的服务单元,每一个服务单元也都是一个微服务,具有独立的功能和责任,可以独立开发、测试、部署和扩展,并能使用轻量级通信机制相互通信。
[5]. Spring MVC和Spring Boot的区别?
Spring MVC是一个基于Servlet的Web框架,主要用于处理Web层的请求和响应,构建传统的Web应用程序。Spring Boot是一个简化Spring应用开发的框架,可以更加快速地构建和部署Spring应用程序。
Spring MVC需要手动配置大量xml文件或Java配置类,配置过程相对复杂;Spring Boot采用了约定优于配置的原则,将常见的配置项进行了默认设置,配置过程相对简单。
Spring MVC的项目通常打包成WAR文件并部署在Web服务器上,而Spring Boot的项目可以打包成可执行的JAR文件,通过内置的嵌入式服务器就可以运行应用程序。