在线留言| 加入收藏| 联系普朗斯建材 您好,欢迎您来到万博ManBetX客户端下载_狼队官方赞助官方网站!

万博ManBetX客户端下载_狼队官方赞助

18年专注铝单板研发生产 万博建材-缔造国际品质

经典的Spring面试常见问题

文章出处:未知责任编辑:admin人气:发表时间:2019-07-03 01:48

  这篇文章主要是想通过一些问题,加深大家对于Spring的理解,所以不会涉及太多的代码!这篇文章整理了挺长时间,下面的很多问题我自己在使用Spring的过程中也并没有注意,自己也是临时查阅了很多资料和书籍补上的。网上也有一些很多关于Spring常见问题/面试题整理的文章,我感觉大部分都是互相copy,而且很多问题也不是很好,有些回答也存在问题。所以,自己花了一周的业余时间整理了一下,希望对大家有帮助。

  Spring是一种轻量级开发框架,旨在提高开发人员的开发效率以及系统的可维护性。Spring官网:。

  我们一般说Spring框架指的都是SpringFramework,它是很多模块的集合,使用这些模块可以很方便地协助我们进行开发。这些模块是:核心容器、数据访问/集成,、Web、AOP(面向切面编程)、工具、消息和测试模块。比如:CoreContainer中的Core组件是Spring所有组件的核心,Beans组件和Context组件是实现IOC和依赖注入的基础,AOP组件用来实现面向切面编程。

  核心技术:依赖注入(DI),AOP,事件(events),资源,i18n,验证,数据绑定,类型转换,SpEL。

  下图对应的是 Spring4.x 版本。目前最新的5.x版本中 Web 模块的 Portlet 组件已经被废弃掉,同时增加了用于异步响应式处理的 WebFlux 组件。

  IoC(InverseofControl:控制反转)是一种设计思想,就是将原本在程序中手动创建对象的控制权,交由Spring框架来管理。IoC在其他语言中也有应用,并非Spirng特有。IoC容器是Spring用来实现IoC的载体,IoC容器实际上就是个Map(key,value),Map中存放的是各种对象。

  将对象之间的相互依赖关系交给IOC容器来管理,并由IOC容器完成对象的注入。这样可以很大程度上简化应用的开发,把应用从复杂的依赖关系中解放出来。IOC容器就像是一个工厂一样,当我们需要创建一个对象的时候,只需要配置好配置文件/注解即可,完全不用考虑对象是如何被创建出来的。在实际项目中一个Service类可能有几百甚至上千个类作为它的底层,假如我们需要实例化这个Service,你可能要每次都要搞清这个Service所有底层类的构造函数,这可能会把人逼疯。如果利用IOC的话,你只需要配置好,然后在需要的地方引用就行了,这大大增加了项目的可维护性且降低了开发难度。

  Spring时代我们一般通过XML文件来配置Bean,后来开发人员觉得XML文件来配置不太好,于是SpringBoot注解配置就慢慢开始流行起来。

  AOP(Aspect-OrientedProgramming:面向切面编程)能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。

  SpringAOP就是基于动态代理的,如果要代理的对象,实现了某个接口,那么SpringAOP会使用JDKProxy,去创建代理对象,而对于没有实现接口的对象,就无法使用JDKProxy去进行代理了,这时候SpringAOP会使用Cglib,这时候SpringAOP会使用Cglib生成一个被代理对象的子类来作为代理,如下图所示:

  使用 AOP 之后我们可以把一些通用功能抽象出来,在需要用到的地方直接使用即可,这样大大简化了代码量。我们需要增加新功能时也方便,这样也提高了系统扩展性。日志功能、事务管理等等场景都用到了 AOP 。

  如果我们的切面比较少,那么两者性能差异不大。但是,当切面太多的话,万博ManBetX客户端下载最好选择 AspectJ ,它比Spring AOP 快很多。