框架整理之spring框架

1.1 什么是Spring

Spring是一个开源框架,同时也是一个轻量级的IOC和AOP容器框架

1.2 Spring的优点


1. Spring是非侵入式的,基于Spring开发的应用一般不依赖于Spring的类

2. Spring是个容器,因为它包含并且管理应用对象的生命周期和配置,比如对象的创建、销毁、回调等

3. Spring提供对事务的管理

4. Spring对主流的框架提供了很好的集成支持,比如和hibernate SpringMVC等框架的集成

  1.2.1.1

侵入式:需要继承接口或是类
非侵入式:不实现任何的接口或是实现类(不使用别人写的东西)

1.3 讲一讲你对AOP和IOC的理解

IOC:Invert of control,控制反转,也称为DI(依赖注入)。依赖对象的创建和维护交给了spring容器来管理,应用程序本身不需要负责依赖对象的创建和维护,简单理解就是把原本应该我们去new对象这个操作转到spring容器中执行(把java代码交给spring容器管理)

AOP:面向切面编程,本质就是拦截器,比如项目中的事务和日志就是很好的体现了AOP。比如:操作数据库的增删改之前,都需要开启事务,增删改之后,都需要提交事务,这样我们就可以写一个拦截器,底层就是采用动态代理实现前置通知和后置通知,在前置通知中开启事务,在后置通知中提交事务,在spring.xml中配置通知即可,spring的事务管理底层就用到了AOP

1.4 spring的注入方式有哪些

①. setter注入:对于习惯了传统的JavaBean开发的程序员来说,通过setter方法注入属性值是熟悉的、直观的和自然的。如果依赖关系比较复杂,那么构造方法注入方式会导致构造方法相当庞大,此时使用设值方式更为简洁

②. 构造注入:构造方法注入很好的响应了Java设计原则之一,在构造期间即可创建一个完整、合法的对象;避免了繁琐的setter方法的编写,所有的依赖关系均在构造方法中设定,依赖关系集中体现;

③. 接口注入:接口注入因具备侵入性,它要求组件必须与特定的接口相关联,因此这种注入方式基本上已经被遗弃了。(用的比较少)

1.5 如何定义bean的作用域,作用域之间的区别

定义bean的作用域,在<bean>中与一个scope的属性,取值有5中

①. singleton:单例模式(默认),也就是说这种范围不管接收到多少个请求,每个容器中之后一个bean的实例。

②. prototype:原型模式,和单例模式相反,为每一个bean请求提供一个实例。

③. request:针对每一次HTTP请求都会产生一个新的bean,并且该bean仅在当前request内有效,请求完成以后,bean会失效并被垃圾回收器回收

④. session:针对每一次HTTP请求都会产生一个新的bean,并且该bean仅在当前session内有效,session过期后,bean也会随之失效

⑤. Global session:global session和portlet应用相关,当你的应用部署在Portlet容器中工作时,如果你想让所有的portlet共用全局存储变量的话,就需要存储到global session中

1.6 什么是spring的自动装配?并解释一下自动装配的各种模式

Spring的自动装配:无须在Spring配置文件中描述javabean之间的依赖关系,IOC容器会自动建立JavaBean之间的关联关系。

①. 根据属性名称自动装配autowire=”byName”

②. 根据数据类型自动装配autowire=”byType”

③. 根据构造方法自动装配autowire=”constructor”

1.7 怎么在spring中注入null或者空字符串

注入null值

<property name=”email”><null/></property>

注入空字符串:

<property name=”email” value=””></property>

1.8 介绍一下spring的事务管理

Spring既支持编程式事务管理(也称编码式事务),也支持声明式的事务管理

①.编程式事务管理:将事务管理代码嵌入到业务方法中来控制事务的提交和回滚,在编程式事务中,必须在每个业务操作中包含额外的事务管理代码

②.声明式事务管理:大多数情况下比编程式事务管理更好用。它将事务管理代码从业务方法中分离出来,
以声明的方式来实现事务管理。事务管理作为一种横切关注点,可以通过AOP方法模块化。
Spring通过Spring AOP框架支持声明式事务管理。

首先要搞明白为什么需要事务?举个例子:比如你去ATM机取1000块钱,大体有两个步骤:首先输入密码金额,银行卡扣掉1000元钱;然后ATM出1000元钱。这两个步骤必须是要么都执行要么都不执行。如果银行卡扣除了1000块但是ATM出钱失败的话,你将会损失1000元;如果银行卡扣钱失败但是ATM却出了1000块,那么银行将损失1000元。所以,如果一个步骤成功另一个步骤失败对双方都不是好事,如果不管哪一个步骤失败了以后,整个取钱过程都能回滚,也就是完全取消所有操作的话,这对双方都是极好的。事务就是用来解决类似问题的。 

1.9 Spring如何配置数据库驱动

①. 可以使用druid、C3P0数据库连接池技术

②. 使用DriverManagerDataSource数据源来配置数据库驱动

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值