Spring是什么?
spring是一个轻量级的java容器框架,用来封装javabean(java对象),中间层框架(粘合剂)起 到一个连接作用,比如说把Struts和hibernate粘合在一起运用,可以让我们的企业开发更快,更加简洁
spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架
- 通过控制反转达到松耦合的目的
- 提供了面向切面编程的支持,允许通过分离应用的业务逻辑与系统服务进行内聚性的开发
- 包含并管理应用对象(bean)的配置和生命周期,这个意义上是一个容器
- 将简单的组件配置、组合成为复杂的应用,这个意义上是一个框架
谈谈你对IOC的理解
首先明白三个概率,容器概率、控制反转、依赖注入
容器概念
ioc容器实际上就是一个map(key、value),里面可以存放各种javabean对象,在项目启动的时候会读取配置文件的baen节点,再通过反射创建对象放到map里。
这个时候map里就有各种对象了,接下来我们要用到里面的对象时,通过DI注入(aotuwired、resource等注解)
控制反转
在没有引入IOC之前,对象A依赖对象B,那么对象A在初始化的时候,自己必须主动创建B对象,无论是创建还是使用对象B,控制权都在自己手上。
引入IOC容器之后,对象A和对象B直接失去了联系,当对象A需要对象B的时候,IOC会主动创建对象B注入到对象A需要的地方。
通过以上对比,不难看出:对象A在获得对象B的过程,是由主动变成被动,控制权颠倒了过来,这就是“控制反转”的由来。
依赖注入
控制被反转之后,获得依赖对象的过程由自身管理变为了由ICO主动注入,依赖注入是实现IOC的方法,就是由IOC在运行期间,动态的将某种依赖关系注入到对象中。
谈谈你对AOP的理解
系统由很多不同的组件组成的,一个组件负责一个功能,除了实现自己的业务逻辑以外,还有日志、事务管理和安全这样的核心服务需要融入到业务逻辑中去。这些系统服务经常被称为横切关注点,因为他们跨越系统的多个组件。
AOP: 将程序中的业务逻辑代码(比如:安全、日志、事务等等)封装成一个切面,然后注入到目标对象(具体业务逻辑 )中去,AOP可以对某些对象或者对象中的某些功能进行增强,比如对象中的方法进行增强,可以在执行某个方法之前做一些事情,也可以在方法执行之后做一些事情。