Spring面试题

Spring面试题

  • 使用Spring的好处是什么?
    轻量、控制反转、面向切面编程(AOP)、Spring容器、MVC框架、事务管理和异常处理。
  • BeanFactory和ApplicationContext的区别?
    BeanFactory是Spring的原始接口,功能比较单一,BeanFactory实现的容器,特点是每次获取对象的时候才会创建对象。
    ApplicationContext继承了BeanFactory的接口,拥有BeanFactory的全部功能,并且扩展了许多高级特性,每次容器启动时就会创建所有对象。
  • Spring Bean的生命周期?
    Bean 的生命周期概括起来就是 5个阶段:
    1. 创建前准备,Bean在加载之前会在上下文和一些配置文件中去解析和查找Bean有关的一些扩展和实现,比如“init-method”,容器在初始化Bean之前会调用的方法,“destroy-method”容器在销毁Bean的时候会调用的一些方法,以及BeanFactoryPostProcessor这一类Bean在加载过程中的一些前置后置的一些处理扩展实现。
    2. 创建实例阶段,通过反射去创建Bean实例对象,并且会扫描和解析Bean声明的一些属性。
    3. 依赖注入阶段,被注入的Bean存在依赖其他Bean对象的情况,则需要对这些Bean对象进行对象注入。
    4. 容器缓存阶段,主要作用是把Bean保存在容器以及Spring的缓存当中,在这个阶段Spring就可以被开发者去使用了。
    5. 销毁实例阶段,Spring上下文被关闭的时候,这个上下文所有的Bean也可以被销毁。
  • Spring当中Bean的作用域?
    单例-singleton-整个应用只创建一个实例
    原型-prototype-每次注入都新建一个实例
    会话-session-为每个会话创建实例
    请求-request-为每个请求创建实例
  • Spring的IOC
    面向对象编程的一个设计原则,用来降低系统之间的耦合度。控制反转是指将控制权从应用程序转移到框架,在Spring中控制权转移到了IOC容器。
  • Spring的AOP
    面向切面编程的思想里,把功能分成核心业务功能和周边功能,在添加周边功能时,要做到不去影响核心业务功能。
  • AOP的实现原理
    通过动态代理来实现。
  • jdk动态代理和cglib动态代理的区别?
    Jdk动态代理:利用拦截器(必须实现InvocationHandler)加上反射机制生成一个代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。
    Cglib动态代理:利用ASM框架,对代理对象类生成的class文件加载进来,通过修改其字节码生成子类来处理。
  • 什么时候用jdk动态代理,什么时候用cglib动态代理?
    1. 目标对象生成了接口 默认用JDK动态代理。
    2. 如果目标对象使用了接口,可以强制使用cglib。
    3. 如果目标对象没有实现接口,必须采用cglib库,Spring会自动在JDK动态代理和cglib之间转换。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值