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

前段时间,我发了一个关于 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常见的面试题,你都会哪些?
程序员面试题库小程序

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

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

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

原创文章,作者:745907710,如若转载,请注明出处:https://blog.ytso.com/252085.html

(0)
上一篇 2022年5月4日
下一篇 2022年5月4日

相关推荐

发表回复

登录后才能评论