spring面试题(面试精简浓缩版)

spring是什么

  • spring是一种为java应用程序提供基本服务的轻量级框架。用于简化企业应用程序的开发,使开发者只关心业务需求

主要包括七个模块

  • springContext:提供框架式的bean访问方式
  • springCore:核心IOC和DI服务
  • springBeans:提供beanFactory,spring将管理对象称为bean
  • springAop:面向切面编程
  • springJDBC:对jdbc的抽象封装,简化了jdbc操作和数据库访问异常处理
  • springWeb:提供了web开发相关的集成特性,例如文件上传
  • springTest:为测试提供支持

用到了哪些设计模式

  1. 工厂模式:创建对象交给BeanFactory工厂
  2. 单利模式:bean默认单例模式
  3. 代理模式:AOP功能用到了JDK动态代理
  4. 模板模式:用来解决代码重复的问题,比如RestTemplate、JmsTemplate、JpaTemplate
  5. 观察者模式:当一个对象发生改变时,依赖它的对象会得到通知和更新,例如applicationListener

spring优点

  1. 属于低侵入式的设计,代码污染性低
  2. spring DI将对象之间的关系交给框架处理,降低耦合度
  3. springAop支持对一些通用任务、事务、日志的集中管理,提高了代码的重用性
  4. 对主流框架提供了集成支持

springIOC

  • ioc就是控制反转,指把创建对象权利交给了spring,并且spring根据配置文件管理实例与实例之间的依赖关系
  • ioc有三种注入方式:构造器注入、setter注入、注解注入

SpringAop

  • 即面向切面编程,将那些与业务无关的公共代码抽取封装成一个可重用的模块。比如权限认证、事务、日志。
  • springAop使用的是动态代理,不会去修改字节码,AspectJ是静态代理,会将AspectJ(切面)加入到字节码中

tips

  • 连接点:程序运行中所执行的方法
  • 切面:被抽取出来的公共模块(使用@AspectJ实现)
  • 切点:对连接点拦截的方法

Spring通知类型

  • 前置、后置、异常、环绕、返回后通知,都是相对于连接点

spring中Bean的生命周期

  • bean实例化–>bean属性注入–>调用SetbeanName()和SetBeanFactory()–>调用Bean初始化方法–>然后bean就可以使用了–>容器关闭调用destory()方法或自定义的销毁方法–>结束

BeanFactory和applicationContext的区别

  • applicationContext是beanFactory的子类,提供了更多的功能,beanFactory是spring最底层的接口,提供了最简单的容器功能,applicationContext支持国际化、同一资源文件的访问方式、可以同时加载多个配置文件,在启动时就把所有的bean实例化了

spring中的单例bean是线程安全的吗

  • 不是,spring没有对单例的bean进行多线程封装处理,但大多数bean都是无状态的(没有数据存储功能),所以某种程度上它是安全的
  • 改变bean的Scope作用域单例singleton–>多例prototype即线程安全了,还可以用ThreadLocal实现线程安全
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值