目录
2. Spring,Spring MVC,Spring Boot之间的关系?
4. 核心容器(Application Context)应用上下文模块
5. BeanFactory-BeanFactory实现举例
20. 说出Spring或SpringMVC常用的注解,并解释。
25. Transactional(rollbackFor = Exception.class)注解了解吗?
1. 什么是Spring框架?
Spring是一款开源的轻量级的Java开发框架,我们一般说spring框架指的是spring Framework,它是很多模块的集合,使用这些模块可以方便的协助我们开发,比如说Spring支持IOC(Inversion of Control:控制反转) 和AOP(Aspect - Oriented Programming:面向切面编程),可以很方便地对数据库进行访问,可以很方便地集成第三方组件(电子邮件,任务,调度,缓存等),对单元测试支持较好,支持RESTful 风格 java应用程序的开发
2. Spring,Spring MVC,Spring Boot之间的关系?
很多人对Spring,SpringMVC,SpringBoot三者傻傻分不清,简单介绍一下这三者:
- Spring包含了多个功能模块,最重要的是Spring-Core(主要提供Ioc依赖注入)模块,Spring的其他模块(如SpringMVC)的功能实现基本都需要依赖于该模块。
- SpringMVC是Spring中的一个很重要的模块,主要赋予Spring快速构建MVC架构的Web程序的能力。MVC是模型(model),视图(View),控制器(Controller),其核心思想是通过将业务逻辑,数据,显示分离来组织代码
- SpringBoot只是简化了配置,如果你需要构建MVC架构的Web程序,还是需要使用SpringMVC作为MVC架构,只是SpringBoot简化了SpringMVC的很多配置,做到开箱即用!
3. 使用Spring框架的好处是什么?
轻量:Spring是轻量级的,基本的班级大约是2MB
控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。
面向切面编程AOP:Spring支持面向切面编程,把应用业务逻辑和系统服务分开
容器:Spring包含并管理应用中对象的生命周期和配置
MVC框架:Spring的WEB框架是一个精心设计的框架,而MVC是WEB的一个很好的替代品
事务管理:Spring提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务
异常管理:Spring提供方便的API把具体技术相关的异常转化为一致的unchecked异常
4. 核心容器(Application Context)应用上下文模块
这是基本的Spring模块,提供Spring框架的基础功能,BeanFactory是任何以Spring为基础的应用核心,Spring框架建立在此模块上,使Spring成为一个容器。
5. BeanFactory-BeanFactory实现举例
Bean工厂是工厂模式的一个实现,提供了控制反转功能,用来把应用的配置和依赖从真正的应用代码分离,常用的BeanFactory实现是XMLBeanFactory类
6. IOC是什么?
IOC(Inversion Of Controller控制反转),是一种设计思想,就是将原本在程序中手动创建对象的控制权,交由Spring框架管理。IOC在其它语言中也有应用,并非Spring特有。IOC容器是Spring用来实现IOC的载体,IOC容器实际就是一个Map(key,value),Map中存放的是各种对象。
将对象之间的相互依赖关系交由IOC容器管理,并由IOC容器完成对象的注入。这样就可以很大程度上简化应用的开发,把应用从复杂的依赖关系解放出来。IOC容器就像是一个工厂,当我们需要创建一个对象的时候,只需要配置好配置文件/注解即可,完全不用考虑对象是如何被创建出来,在实际项目中一个Service类可能由几百上千个类作为他的底层,假如我们需要实例化这个Service,可能每次要搞清楚这个Service所有底层类的构造函数,这可能会把人逼疯。如果利用IOC,只需要配置好,在需要的地方引用就行了,大大增加了项目的可维护性且降低了开发难度
IOC负责创建对象,管理对象(通过依赖注入DI),装配对象,配置对象,并且管理这些对象的生命周期
7. IOC有什么用?优点是什么?
作用:
- 管理对象的创建和依赖关系的维护,对象的创建并不是简单的事,在对象关系比较复杂时,如果依赖关系需要程序员维护,是很麻烦的
- 解耦,由容器去维护具体的对象。
- 托管了类的产生过程,比如我们需要在类产生过程中做一些处理,最直接的例子就是代理,如果有容器可以把这部分处理交给容器,应用程序则无序关心类是如何完成代理的
优点:
- IOC或依赖注入把应用的代码量降到最低
- 它使应用容易测试,单元测试不再需要单例和JNDI查找机制
- 最小的代价和最小的侵入性使松散耦合得以实现
- IOC容器支持加载服务时饿汉式初始化和懒加载
8. 什么是AOP?
面向切面编程&#x