前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于Spring常见的面试题,你都会哪些?

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

作者头像
业余草
发布2019-05-05 11:13:27
3730
发布2019-05-05 11:13:27
举报
文章被收录于专栏:业余草业余草

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1420408

第一时间获取技术干货和业界资讯!

前段时间,我发了一个关于 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。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年04月18日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档