1.为什么要使用spring?
- spring 提供 ioc 技术,容器会帮你管理依赖的对象,从而不需要自己创建和管理依赖对象了,更轻松的实现了程序的解耦
- spring 提供了面向切片编程,这样可以更方便的处理某一类的问题。
- spring 提供了事务支持,使得事务操作变的更加方便。
- 更方便的框架集成,spring 可以很方便的集成其他框架,比如 MyBatis、hibernate 等。
2.解释一下什么是 aop?
aop 是面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。
简单来说就是统一处理某一“切面”(类)的问题的编程思想,比如统一处理日志、异常等。
3.解释一下什么是 ioc?
ioc是控制反转,对于 spring 框架来说,就是由 spring 来负责控制对象的生命周期和对象间的关系
4.spring 常用的注入方式有哪些?
- setter 属性注入
- 构造方法注入
- 注解方式注入
5.spring 支持几种 bean 的作用域?
spring 支持 5 种作用域,如下:
- singleton:spring ioc 容器中只存在一个 bean 实例,bean 以单例模式存在,是系统默认值;
- prototype:每次从容器调用 bean 时都会创建一个新的示例,既每次 getBean()相当于执行 new Bean()操作;
- request:每次 http 请求都会创建一个 bean;
- session:同一个 http session 共享一个 bean 实例;
- global-session:用于 portlet 容器,因为每个 portlet 有单独的 session,globalsession 提供一个全局性的 http session。
6.谈谈你对Spring的理解
- Spring是实现了工厂模式的工厂类,这个类名为BeanFactory。在程序中通常BeanFactory的子类ApplicationContext。Spring相当于一个大的工厂类,在其配置文件中通过元素配置用于创建实例对象的类名和实例对象的属性。
- Spring提供了对IOC良好支持,IOC是一种编程思想,是一种架构艺术,利用这种思想可以很好地实现模块之间的解耦
- Spring提供了对AOP技术的良好封装, AOP称为面向切面编程,就是系统中有很多各不相干的类的方法,在这些众多方法中可以进行统一处理。如:加入日志处理
7.使用Spring框架的好处是什么?
- 轻量:Spring 是轻量的,基本的版本大约2MB。
- 控制反转:Spring通过控制反转实现了松散耦合
- 面向切面的编程(AOP):Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。
- 事务管理:Spring 提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)。
8.ApplicationContext通常的实现是什么?
- FileSystemXmlApplicationContext :此容器从一个XML文件中加载beans的定义,XML Bean 配置文件的全路径名必须提供给它的构造函数。
- ClassPathXmlApplicationContext:此容器也从一个XML文件中加载beans的定义,这里,你需要正确设置classpath因为这个容器将在classpath里找bean配置。
- WebXmlApplicationContext:此容器加载一个XML文件,此文件定义了一个WEB应用的所有bean。