备战面试之Spring框架

1、谈一谈Spring框架

Spring框架是一个应用框架,它的目的是帮助我们快速搭建一个Java企业应用,其中IOC和AOP是Spring框架的两个核心子框架,在这里我想具体的谈一谈这两个子框架。

IoC

Spring最核心的功能就是它可以作为一个轻量化的IoC容器,所谓IoC就是控制反转,是一种面向对象的程序设计思想,这种思想解决的是显式地实例化对象造成的类与类之间耦合的问题,要解决这个问题就不能让程序自身实例化对象,必需把对象实例化的过程交给第三方容器完成,也就是把对象生命周期的控制权,从程序自身转移到容器中。实现控制反转的一个非常流行的方式就是依赖注入,所谓依赖注入就是由第三方容器将程序以来的对象,通过setter方法或者构造器的方式注入到程序中,这样一来程序只需要关注如何使用对象,而对象的具体是如何实例化的,程序并不需要关心,这样就实现了程序之间的解耦,让开发者有更多的精力关注业务而不是管理对象的生命周期。

在Spring中,受容器管理的对象以bean的形式存在于容器中,bean是由bean工厂创建并管理的,创建方式是首先实例化对象,然后进行属性注入,然后进行初始化,至此就得到了一个可用的bean组件,那么在这个过程中需要解决一个问题,就是循环依赖的问题,Spring解决循环依赖是通过提前暴露的方式,也就是对象实例化之后,还没有进行属性填充,这时就已经可以从缓存中获取到该对象的引用,这样就解决了循环依赖的问题。

AOP

AoP也称为面向切面编程,它主要也是为了解决代码重复的问题,一般情况下,面向对象编程能够给很好的实现代码复用,但是针对某些情况,比如调用方法之前进行安全检查,调用方法的时候打印日志,这些属于横切性的问题,使用面向对象编程没办法将这些散落的代码模块化,这时候就需要使用面向切面编程。所以说AOP是对OOP的一种补充,二者结合使用能够更好的实现代码复用。 AOP中有几个重要的概念,分别是

  • 切面(aspect):把解决一个横切性问题的代码封装起来,就成为一个切面
  • 切入点(pointcut):切入点就是散落的代码执行的地方
  • 增强(advice):增强就是在切入点执行的动作,其实就是刚才所说的散落的代码

面向切面问题,说白了其实就是在切入点执行增强,比如切入点是一个方法,调用方法之前打印日志就是一次增强,使用了面向切面编程就可以在每次调用方法的时候都自动打印日志,为了实现这一点,Spring使用Aop代理对切点进行增强,一个Aop代理可以是一个JDK动态代理,通过代理调用目标方法时,将会进入代理的invoke方法,增强就是在这个invoke方法里面执行的。

除了IoC框架和AOP框架啊,Spring还整合了Web框架、持久化框架、事务框架以及各种中间件框架,所以说Spring框架是一个应用框架。

2、SpringBoot和Spring框架的区别

Springboot是对Spring框架的扩展,因为Spring的组件需要配置之后才能注册到容器中,因此早期的Spring开发需要进行大量的配置,而我们希望在程序启动的时候,已经有一些经常使用的默认的组件存在于容器中,比如引入缓存中间件希望有操作缓存的组件,引入数据库框架希望有操作数据库的组件,Springboot就实现了这个功能,它在Spring的基础上引入了自动配置,避免了一些繁琐的配置,实现了开箱即用,大大简化了Spring框架的使用。

Springboot实现自动配置,其实就是先读取指定的文件也就是Spring.factories,文件里面包含自动配置类的路径,然后Springboot就依次扫描这些自动配置类。自动配置类里面就指明了需要注册进容器的组件,Springboot将这些组件注册到容器中,这个过程都是在程序启动的时候自动完成的。

利用Springboot的自动配置原理,使得第三方jar包的使用十分方便。

全部评论

相关推荐

牛客刘北:如果暑期实习是27届的话,你要晚一年才会毕业,企业为什么会等你呢?要搞清时间逻辑呀!27届现在实习只能是在暑假实习,这是日常实习,不是暑期实习。所以多去投日常实习吧,暑期实习肯定不会要你的
点赞 评论 收藏
分享
06-18 08:36
湖南大学 Java
运营你豪哥:没啥拷打的 1.增加量化结果,现在有点缺效果数据 2.突出复杂性,现在的项目描述有点像功能清单,强调一下技术难点和解决方案。
不给转正的实习,你还去吗
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务