Spring常见面试题
Spring简介
Spring是一个轻量级的IOC和AOP容器框架。是为Java应用程序提供基础服务的一套框架,目的是为了简化企业应用程序的开发,使得程序员只需要关注业务需求;
- Spring Context:提供框架式的Bean访问方式,以及企业级功能(JNDI、定时任务等);
- Spring Core:核心类库,所有功能都依赖于该类库,提供IOC和DI服务;
- Spring AOP:AOP切面服务;
- Spring Web:提供了基本的面向Web的综合特性,提供常用框架如SpringMVC的支持,Spring能管理这些框架,将Spring的资源注入给框架,也能在这些框架的前后加入拦截器;
- Spring MVC:提供面向Web应用的Model-View-Controller,及MVC实现
- Spring DAO:对JDBC的抽象封装,简化数据访问的异常处理,并能统一管理JDBC事务;
- Spring ORM:对现有的ORM框架的支持如(MyBatis,Hibernate);
Spring的优点
- Spring低侵入式设计,代码的污染极低;
- Spring的DI机制将对象之间的依赖关系交由框架处理,减低组件的耦合;
- Spring提供了AOP技术,将业务以外一些通用的进行抽取复用,如安全,事务,日志,权限等进行集中式管理;
- Spring对于主流应用框架提供了集成支持;
Spring IOC
- IOC就是控制反转,指创建对象的控制权转移给了Spring框架进行管理,而不需要程序员手动new对象,并由Spring根据配置文件去创建实例和管理各个实例之间的依赖关系,对象与对象直接松散耦合,也利于功能的复用。DI依赖注入和控制反转是同一个概念的不同角度的描述,即应用程序在运行时依赖IOC容器来动态注入对象需要的外部依赖;
- SpringIOC有三种方式注入:构造器注入、setter方法注入、注解注入
Spring AOP
- OOP面向对象,允许开发者定义纵向的关系,但是不适用于定义横向的关系,会导致大量代码重复,而不利于各模块的重用;
- AOP面向切面,作为OOP面向对象的扩展,用于将一些与业务逻辑无关,但是却共通的的代码抽取封装为一个可重用的模块,这个模块被命名为”切面Aspect”,减少重复代码,降低耦合,提高系统可维护性;
- AOP实现关键在于代理模式,AOP代理主要分为动态代理(JDK Or CGlib)和静态代理AspectJ;
- JDK动态代理核心是InvocationHanlder接口和Proxy类,在获取代理对象时,使用Proxy类来动态创建目标类的代理类;
//TODO
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 九世!
评论