Spring面试题

  1. 什么是IoC?
控制反转是将对象间的依赖关系以及生命周期交由IoC容器管理。
反转的是对象的装配以及生命周期管理的权力。
控制反转有两种实现:依赖查找和依赖注入。
  1. 依赖注入有几种方式,spring支持几种?
依赖注入有三种方式:接口注入,构造器注入和setter注入。
spring支持构造器注入和setter注入。
  1. @Autowried注解和@Resource的区别?
@Autowried注解是Spring提供,默认按byType类型注入,要求依赖对象必须存在。
如果想要使用byName注入,可以配合@Qualifier注解使用。
@Resource注解默认按照byName注入。
  1. Spring中用到哪些设计模式?
单例模式,bean默认都是单例的。
工厂模式,beanfactory用来创建对象。
模板方法,RestTemplate,JdbcTemplate等。
代理模式,aop的实现。
  1. Spirng中bean的scope有几种?
singleton:单例,默认,容器中仅有一个对象实例。
prototype:原型,每个请求创建一个对象,需要应用自己管理bean生命周期。
request:每个http请求创建一个对象,对象仅在当前请求中有效。
session:每个session会话创建一个对象,对象尽在当前会话中有效。
application:每个应用创建一个对象,对象仅在当前web应用中有效。
  1. spring中bean装配与自动装配
bean在spring容器中组合到一起称为装配。
byType:通过类型注入依赖对象,默认方式。
byName:通过名称注入依赖对象。
constructor:通过构造器注入依赖对象。
autodetect:先尝试构造器装配,不成功,使用byType。
no:不使用自动装配。
  1. spring aop
OOP:基本单位是类(Class);
AOP:基本单位是切面(Aspect);
Advice:定义了切面的工作内容以及执行时机。
point cut:定义了切面的工作地点,是特殊的连接点。
aspect:由advice + point cut组成。
joint point:可以执行切面的地点。
weaving:将切面应用到目标对象中。
introduction:向现有类添加新的属性和功能。
  1. 通知类型
Before:前置通知,在目标方法执行前执行。
around:环绕通知,在目标方法执行前后都执行
after returning:在目标方法正常执行后执行。
after throwing:目标方法出现异常后执行。
after finally:目标方法执行后执行。
  1. AOP实现方式
1. 静态代理
  1.1 编译期织入
  1.2 类加载期织入
2. 动态代理
  2.1 JDK动态代理
  2.2 CGLIB

10 Spring AOP也AspectJ AOP的区别

Spring AOP使用动态代理,仅支持方法级别的pointcut;
AspectJ AOP使用静态代理,支持属性级别的pointcut;
  1. Spring事务支持
1. 编程式事务
2. 声明式事务
  1. Spring中隔离级别
read_uncommitted:读未提及,允许读取未提交数据,会引发脏读,不可重复读与幻读。
read_committed:读已提交,允许读取并发事务已经提交的数据,解决脏读,不解决不可重复读与幻读。
repeatable_read:重复读,同一数据多次读取是相同的,解决脏读,不可重复读,不解决幻读。
serializable:串行化,解决所有问题,但性能差,不建议使用。
default:使用数据库默认隔离级别。
  1. Spring中传播属性
required:当前存在事务,在当前事务中运行,否则新建事务。
required_new:必须新建事务,当前存在事务挂起。
support:存在事务在事务中运行,不存在就以非事务运行。
not_support:在非事务中运行,存在事务则挂起。
mandatory:必须在事务中运行,不存在事务则抛出异常。
never:必须在非事务中运行,存在事务则抛出异常。
nested:存在事务,创建嵌套事务,否则类似required。
(nested是spring独有,内部事务作为外部事务的子事务,子事务和外部事务一同提交。
子事务回滚(try-catch块)不影响外部事务,但外部事务回滚,子事务也回滚。)
  1. Spring MVC工作流程
1. 用户请求到达DispatcherServlet。
2. DispathcerServlet将url交给HandlerMapping查找handler,HadnlerMapping将结果返回。
3. DispatcherServlet通过HandlerAdapter调用handler并返回结果。
4. DispatcherServlet将结果交给ViewResolver解析并返回View。
5. DispatcherServlet渲染View,返回给用户。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值