spring常见面试题 | 面试题谈谈你对spring的理解


一、spring为什么出现?

spring的出现是为了解耦,我们在学习java初期,相信很多小伙伴都使用的是 JSP+Servlet+MySQL+JDBC 技术,在操作 dao层 的时候,每次都需要实例化一次,这样是不是就很繁琐;有的人可能使用单例模式来解决这个问题,但业务代码与单例模式的模板代码放在一个类里而且也会出现大量重复的单例模式的模板代码,耦合性较高,要知道java语言可是高内聚,低耦合的;所以伟大的 Spring 就出现了,也就是类似于数据库连接池的东西。下面着重介绍这个框架。

二、理解Spring

传统Java SE程序设计,我们直接在对象内部通过new进行创建对象或者getInstance等直接或者间接调用构造方法创建一个对象;而在Spring开发模式中,Spring容器使用了工厂模式为我们创建了所需要的对象(这个过程就是DI通过setter方法在配置中注入对象),我们使用时不需要自己去创建,直接调用Spring为我们提供的对象即可,这就是控制反转的思想。实例化一个java对象有三种方式:

  1. 使用类构造器,
  2. 使用静态工厂方法
  3. 使用实例工厂方法

当使用spring时我们就不需要关心通过何种方式实例化一个对象,spring通过控制反转机制自动为我们实例化一个对象。

三、面向切面AOP

在面向对象编程(OOP)思想中,我们将事物纵向抽象成一个个的对象。而在面向切面编程中,我们将一个个对象某些类似的方面横向抽象成一个切面,对这个切面进行一些如权限验证,事物管理,记录日志等公用操作处理的过程就是面向切面编程的思想。

四、Spring支持的几种bean的作用域。

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

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

五、使用Spring框架的好处是什么

轻量:Spring是 轻量 的,基本的版本大约2MB。 控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。 面向切面的编程(AOP):Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。 容器:Spring 包含并管理应用中对象的生命周期和配置。 MVC框架:Spring的WEB框架是个精心设计的框架,是Web框架的一个很好的替代品。 事务管理:Spring 提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)。 异常处理:Spring 提供方便的API把具体技术相关的异常(比如由JDBC,Hibernate or JDO抛出的)转化为一致的unchecked 异常。

六、Spring配置bean实例化有哪些方式。

1)使用类构造器实例化(默认无参数)

  <bean id="bean1" class="cn.itcast.spring.b_instance.Bean1"></bean>  

2)使用静态工厂方法实例化(简单工厂模式)
下面这段配置的含义:调用Bean2Factory的getBean2方法得到bean2

 <bean id="bean2" class="cn.itcast.spring.b_instance.Bean2Factory" factory-method="getBean2"></bean>  

3)使用实例工厂方法实例化(工厂方法模式)

先创建工厂实例bean3Facory,再通过工厂实例创建目标bean实例

<bean id="bean3Factory" class="cn.itcast.spring.b_instance.Bean3Factory"></bean>
 <bean id="bean3" factory-bean="bean3Factory" factory-method="getBean3"></bean> 
  • 6
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

T-OPEN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值