Spring

SpringMVC面试题

《林老师带你学编程》知识星球是由多个工作10年以上的一线大厂开发人员联合创建,希望通过我们的分享,帮助大家少走弯路,可以在技术的领域不断突破和发展。

🔥 具体的加入方式:

1、什么是 SpringMVC?

答: SpringMvc 是 spring 的一个模块,基于 MVC 的一个框架,无需中间整合层来整合。 

2 、Spring MVC 的优点:

答:

1)它是基于组件技术的.全部的应用对象,无论控制器和视图,还是业务对象之类的都是 java 组件.并且和 Spring 提供的其他基础结构紧密集成.

2)不依赖于 Servlet API(目标虽是如此,但是在实现的时候确实是依赖于 Servlet 的)

3)可以任意使用各种视图技术,而不仅仅局限于 JSP

4)支持各种请求资源的映射策略

5)它应是易于扩展的

3 、SpringMVC 工作原理?

答:

1)客户端发送请求到 DispatcherServlet

2)DispatcherServlet 查询 handlerMapping 找到处理请求的 Controller

3)Controller 调用业务逻辑后,返回 ModelAndView

4)DispatcherServlet 查询 ModelAndView,找到指定视图

5)视图将结果返回到客户端

4 、SpringMVC 流程?

答:

1)用户发送请求至前端控制器 DispatcherServlet。

2)DispatcherServlet 收到请求调用 HandlerMapping 处理器映射器。

3)处理器映射器找到具体的处理器(可以根据 xml 配置、注解进行查找),生成处理器对象 及处理器拦截器(如果有则生成)一并返回给 DispatcherServlet。

4)DispatcherServlet 调用 HandlerAdapter 处理器适配器。

5)HandlerAdapter 经过适配调用具体的处理器(Controller,也叫后端控制器)。

6)Controller 执行完成返回 ModelAndView。

7)HandlerAdapter 将 controller 执行结果 ModelAndView 返回给 DispatcherServlet。

8)DispatcherServlet 将 ModelAndView 传给 ViewReslover 视图解析器。

9)ViewReslover 解析后返回具体 View。

10)DispatcherServlet 根据 View 进行渲染视图(即将模型数据填充至视图中)。

11)DispatcherServlet 响应用户。

6 、SpringMvc 的控制器是不是单例模式,如果是,有什么问题,怎么解决?

答:是单例模式,所以在多线程访问的时候有线程安全问题,不要用同步,会影响性能的,解决 方案是在控制器里面不能写字段。

7、如果你也用过 struts2.简单介绍下 springMVC 和 struts2 的区别有哪些?

查看更多

Mybatis面试题

《林老师带你学编程》知识星球是由多个工作10年以上的一线大厂开发人员联合创建,希望通过我们的分享,帮助大家少走弯路,可以在技术的领域不断突破和发展。

🔥 具体的加入方式:

1.什么是Mybatis?

MyBatis 是一款优秀的支持自定义 SQL 查询、存储过程和高级映射的持久层框架,消除了 几乎所有的 JDBC 代码和参数的手动设置以及结果集的检索 。 MyBatis 可以使用 XML 或注解进 行配置和映射,

MyBatis 通过将参数映射到配置的 SQL 形成最终执行的 SQL 语句 ,最后将执行 SQL 的结果映射成 Java对象返回。

2.Hibernate优点?

Hibernate建立在POJO和数据库表模型的直接映射关系上。通过xml或注解即可和数据库表做映射。通 过pojo直接可以操作数据库的数据。它提供的是全表的映射模型。

   消除代码映射规则,被分离到xml或注解里配置。

  无需在管理数据库连接,配置在xml中即可。

  一个会话中,不要操作多个对象,只要操作Session对象即可。

  关闭资源只需关闭Session即可。

3.Hibernate缺点?

  全表映射带来的不便,比如更新需要发送所有的字段。

  无法根据不同的条件组装不同的sql。

  对多表关联和复杂的sql查询支持较差,需要自己写sql,返回后,需要自己将数据组成pojo。   不能有效支持存储过程。

  虽然有hql,但是性能较差,大型互联网需要优化sql,而hibernate做不到。

4.Mybatis优点?

1.  小巧,学习成本低,会写sql上手就很快了。

2.  比jdbc,基本上配置好了,大部分的工作量就专注在sql的部分。

3.  方便维护管理,  sql不需要在Java代码中找,  sql代码可以分离出来,重用。

4.  接近jdbc,灵活,支持动态sql。

5.  支持对象与数据库orm字段关系映射。

5.Mybatis缺点?

   由于工作量在sql上,需要 sql的熟练度高。

  移植性差。  sql语法依赖数据库。不同数据库的切换会因语法差异,会报错。

6.什么时候用Mybatis?

如果你需要一个灵活的、可以动态生成映射关系的框架。目前来说,因为适合,互联网项目用Mybatis 的比例还是很高滴。

7.Mybatis的核心组件有哪些?分别是?

SqlSessionFactoryBuilder(构造器) :它会根据配置信息或者代码来生成SqlSessionFactory。

SqlSessionFactory  (工厂接口)  :依靠工厂来生成SqlSession。

SqlSession  (会话):是一个既可以发送 sql去执行返回结果,也可以获取Mapper接口。

SQL Mapper:它是新设计的组件,是由一个Java接口和XML文件(或注解)构成的。需要给出对象的 SQl和映射规则。它负责发送SQL去执行,并返回结果。

8.#{}${}的区别是什么?

${}是字符串替换,  #{}是预编译处理。  一般用#{}防止 sql注入问题。

9.Mybatis9个动态标签是?

  •    if
  •    c h o o s e (when 、 oterwise)
  •    trim (where 、 set)
  •    foreach
  •    bind

10.xml映射文件中,有哪些标签?

查看更多

Spring面试题

《林老师带你学编程》知识星球是由多个工作10年以上的一线大厂开发人员联合创建,希望通过我们的分享,帮助大家少走弯路,可以在技术的领域不断突破和发展。

🔥 具体的加入方式:

1.Spring框架?

Spring框架是由于软件开发的复杂性而创建的,  Spring使用的是基本的JavaBean来完成以前只可能由 EJB完成的事。从简单性、可测性和松更合性角度而言,绝大部分Java应用都可以用Spring。

2.Spring的整体架构?

大约分为20个模块。

3.Spring可以做什么?

4.Spring的优点?缺点?

优点:

   Spring属于低侵入设计。

   IOC将对象之间的依赖关系交给Spring,降低组件之间的更合,实现各个层之间的解更,让我们更专注 于业务逻辑。

  提供面向切面编程。

  对各种主流插件提供很好的集成支持。

  对事务支持的很好,只要配置即可,无须手动控制。

缺点:

  依赖反射,影响性能。

5.你能说几个Spring5的新特性吗?

   spring5整个框架基于java8

  支持http/2

   Spring Web MVC支持最新API

   Spring WebFlux 响应式编程

  支持Kotlin函数式编程

6.IOC?

负责创建对象、管理对象(通过依赖注入)、整合对象、配置对象以及管理这些对象的生命周期。

7.什么是依赖注入?

依赖注入是Spring实现IoC的一种重要手段,将对象间的依赖关系的控制权从开发人员手里转移到容 器。

8.IOC注入哪几种方式?

1.构造器注入

2.setter注入

3.接口注入(我们几乎不用)

9.IOC优点?缺点?

优点:

  组件之间的解糯,提高程序可维护性、灵活性。

缺点:

  创建对象步骤复杂,有一定学习成本。

  利用反射创建对象,效率上有损。(对于代码的灵活性和可维护性来看,  Spring对于我们的开发带来 了很大的便利,这点损耗不算什么喷)

10.bean 的生命周期?

1.Spring 对bean进行实例化。

2.Spring将值和bean的引用注入到 bean对应的属性中。

3.如果bean实现了BeanNameAware接口, Spring将bean的ID传递给setBeanName()方法。

4.如果bean实现了BeanFactoryAware接口,  Spring将调用setBeanFactory()方法,将 bean所在的应用引 用传入进来。

5.如果bean实现了ApplicationContextAware接口, Spring将调用setApplicationContext()方法,将bean 所在的应用引用传入进来。

6.如果bean实现了BeanPostProcessor 接口, Spring将调用他们的post-ProcessBeforeInitalization()方 法。

7.如果bean实现了InitializingBean接口, Spring将调用他们的after-PropertiesSet()方法,类似地,如果 bean使用init-method声明了初始化方法,该方法也会被调用。

8.如果bean实现了BeanPostProcessor接口, Spring将调用它们的post-ProcessAfterInitialization()方法。

9.此时,  bean已经准备就绪,可以被应用程序使用了,他们将一直驻留在应用上下文中,直到该应用被销 毁。

10.如果bean实现了DisposableBean接口, Spring将调用它的destory()接口方法,同样,如果bean使用 destroy-method声明了销毁方法,该方法也会被调用。

查看更多

滚动至顶部