JAVA常见笔试面试总结(八)(Spring)

1.开发中主要使用 Spring 的什么技术 ?
IOC 容器管理各层的组件,使用 AOP 配置声明式事务,整合其他框架
2.AOP
面向切面编程,在软件开发中,如果几个类,有相同的或者类似的方法,我们可以使用接口或者抽象类来实现代码的整合,但是如果给所有的类方法添加日志记录,性能统计,安全控制,事务处理,异常处理等操作,此时就可以应用AOP技术,AOP就是希望将这些分散在各个业务逻辑代码中的相同代码,通过横向切割的方式抽取到一个独立的模块中,让业务逻辑类依然保存最初的单纯。 spring中AOP的具体实现:JDK动态代理(针对接口)或cglib(针对类),默认使用JDK动态代理,如果该类没有实现接口,再使用cglib
3.IOC和DI
IOC:控制反转:就是由spring来控制对象的创建和销毁,你只需要告诉spring,你需要什么对象即可,并不需要自己去创建,以前是应用程序去创建对象,IOC是spring帮你创建对象并且将此对象注入到对应的应用程序中
DI:依赖注入:实现原理主要是反射,A对象需要B对象,以往我们会直接创建B对象,现在spring帮我们早就创建好B对象啦,你只需要和spring说A对象需要B对象,spring就帮你生成并注入B对象啦
4.spring中创造bean的几种方式
调用构造器创造bean,调用静态工厂方法创造bean,调用实例工厂方法创造bean,使用FactoryBean接口创造bean
5.常用的注入bean的方式
构造方法注入,setter注入,注解注入
6.spring中bean的作用域
singleton:单例模式
prototype:原型模式,每次都获取一个新的bean
request:在一次Http请求中,容器会返回该Bean的同一实例
session:在一次Http Session中,容器会返回该Bean的同一实例
global Session:在一个全局的Http Session中,容器会返回该Bean的同一个实例
7.Bean的生命周期
初始化IOC容器,通过构造器或工厂方法创建bean的实例,为bean的属性设置值或者对其它bean的引用,调用bean设置的初始化方法,使用bean,容器关闭时,调用bean的销毁方法,然后关闭容器
8.bean配置的三种方法
基于xml配置Bean,使用注解定义Bean,基于Java Config
9.spring 事务实现方式有哪些?
编码式:基本没人用
声明式事务:基于 xml 配置文件的方式,注解方式
10.关于脏读,不可重复读,幻读
脏读:脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是脏数据,依据脏数据所做的操作可能是不正确的
不可重复读:是指在数据库访问中,一个事务范围内两个相同的查询却返回了不同数据
幻读:指当事务不是独立执行时发生的一种现象。事务A读取与搜索条件相匹配的若干行。事务B以插入或删除行等方式来修改事务A的结果集,然后再提交
11.spring 的事务隔离
default:使用数据库默认的事务隔离级别
read uncommited(未提交读):最低隔离级别、事务未提交前,就可被其他事务读取(会出现幻读、脏读、不可重复读)
read commited(已提交读):一个事务提交后才能被其他事务读取到(会造成幻读、不可重复读)
repeatable read(可重复读):保证多次读取同一个数据时,其值都和事务开始时候的内容是一致,禁止读取到别的事务未提交的数据(会造成幻读)
serializable(序列化):代价最高最可靠的隔离级别,该隔离级别能防止脏读、不可重复读、幻读
12.BeanFactory和FactoryBean的区别
BeanFactory:该接口是IoC容器的顶级接口,是IoC容器的最基础实现,也是访问Spring容器的根接口,负责对bean的创建,访问等工作
FactoryBean:是一种工厂bean,可以返回bean的实例,我们可以通过实现该接口对bean进行额外的操作,例如根据不同的配置类型返回不同类型的bean,简化xml配置等
13.事物的传播行为
事务传播行为(propagation behavior)指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行
在这里插入图片描述
其实主要分为三大类:
PROPAGATION_REQUIRED,PROPAGATION_SUPPORTS,PROPAGATION_MANDATORY属于一类,支持当前事务,A调用B,如果A事务存在,那么A,B将处于一个事务
PROPAGATION_REQUIRES_NEW,PROPAGATION_NOT_SUPPORTED,PROPAGATION_NEVER属于一类,不支持原有事务,A调用B,B肯定不会与A处于同一个事务
PROPAGATION_NESTED嵌套事务,允许再同一个事务中设置保存点,回滚保存点,外层事务的回滚可以引起内层事务的回滚。而内层事务的异常并不会导致外层事务的回滚,它是一个真正的嵌套事务
14.AOP中一些常见的概念
目标对象(Target):代理的目标对象(要增强的类)
连接点(Joinpoint):在spring中指的是被拦截到的方法
切入点(Pointcut):指我们要对那些Joinpoint进行拦截的定义
通知(Advice):指的是拦截到Joinpoint之后所做的事情就是通知
切面(Aspect):是切入点和通知的结合
织入(Weaving):把增强应用到Target的过程

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值