关于Spring常见的面试题,你都会哪些?

JAVA herman 339浏览
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xmtxtt,发送下载链接帮助你免费下载!
本博客日IP超过1800,PV 2600 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog,之前的微信号好友位已满,备注:返现
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序

前段时间,我发了一个关于 Spring 的脑图。不知道有多少人看过了?看过的请留言举手。

今天,我要抽个时间靠靠大家了。看看大家对 Spring 框架掌握的怎么样?

先来看看第一个面试题:Spring 中都用到了哪些设计模式?

我告诉你,Spring 框架中用到了很多设计模式。比如:工厂模式、单例模式、代理模式、模板模式、装饰器模式、责任链模式、观察者模式、策略模式、构建模式、原型模式等。
工厂模式用到的类有:BeanFactory 和 ApplicationContext 等。

单例模式:Spring依赖注入Bean实例默认是单例的。Spring的依赖注入(包括lazy-init方式)都是发生在 AbstractBeanFactory 的 getBean 里。 getBean 的 doGetBean 方法调用 getSingleton 进行bean的创建。

代理模式:这个估计都知道。AOP 的原理就是代理模式。最常见的通过 Proxy 类中的 newProxyInstance 来完成代理操作。再比如:JdkDynamicAopProxy 和 Cglib2AopProxy 等。
模板模式:这个也很常见,比如:JdbcTemplate、RestTemplate 等。

装饰器模式:常见的有 Spring Session 的 ServletRequestWrapper。再比如:SessionFactory 等。

责任链模式:这个很简单,一般用到过滤器的地方基本上都是责任链模式,比如:HandlerExecutionChain 等。

观察者模式:ApplicationEvent、ApplicationListener 等。

策略模式:比如,Spring 类中的 SimpleInstantiationStrategy 等。

构建模式:BeanDefinitionBuilder 等。

原型模式:这种模式,用过 Spring 的应该都知道吧。在 AbstractBeanFactory 中使用一种特定的原型设计模式,将 bean 初始化为原型作用域。

适配器模式:AdvisorAdapter 和 MethodBeforeAdviceAdapter 等。

第二题:ApplicationContext 通常的实现类有哪些?

最常见的有 3 个。也就是大家加载 xml 的那 3 个。

FileSystemXmlApplicationContext :此容器从一个 XML 文件中加载 beans 的定义,XML Bean 配置文件的全路径名必须提供给它的构造函数。

ClassPathXmlApplicationContext:此容器也从一个XML文件中加载 beans 的定义,这里,你需要正确设置 classpath 因为这个容器将在 classpath 里找 bean 配置。

WebXmlApplicationContext:此容器加载一个XML文件,此文件定义了一个WEB应用的所有 bean。

还有一个基于注解的实现,可能被很多人忽略了。我前面分享脑图的时候,那个类图上有。就是 AnnotationConfigWebApplicationContext。

第三题:解释一下 Spring 支持的几种 bean 的作用域?

Spring 框架支持以下五种 bean 的作用域:

  • singleton : bean在每个Spring ioc 容器中只有一个实例。
  • prototype:一个bean的定义可以有多个实例。
  • request:每次http请求都会创建一个bean,该作用域仅在基于web的Spring ApplicationContext情形下有效。
  • session:在一个 HTTP Session 中,一个bean定义对应一个实例。该作用域仅在基于web的Spring ApplicationContext情形下有效。
  • global-session:在一个全局的 HTTP Session 中,一个bean定义对应一个实例。该作用域仅在基于web的Spring ApplicationContext情形下有效。

缺省的 Spring bean 的作用域是 Singleton。

程序员面试题库小程序

更多关于 Spring 的面试题,请扫描我的程序员题库小程序查看。

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加QQ1群:135430763(2000人群已满),QQ2群:454796847(已满),QQ3群:187424846(已满)。QQ群进群密码:xttblog,想加微信群的朋友,之前的微信号好友已满,请加博主新的微信号:xttblog,备注:“xttblog”,添加博主微信拉你进群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作可添加助理微信进行沟通!

本文原文出处:业余草: » 关于Spring常见的面试题,你都会哪些?