浅谈spring--AOP与IOC / DI

Spring 是一个开源框架,主要优势是其分层架构,分层架构允许选择使用哪一个组件。

七大模块组成包含Spring Core,AOP,ORM,DAO,Web,Context,Web MVC。 Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 对象的方式。组件都可以单独存在,或者与其他一个或多个模块联合实现。 

  • Spring Core

Core模块是Spring的核心类库,Spring的所有功能都依赖于该类库,Core主要实现IOC(控制反转)功能,Spring的所有功能都是借助IOC实现的。

  • AOP

AOP模块是Spring的AOP库,提供了AOP(拦截器)机制,并提供常用的拦截器,供用户自定义和配置。 AOP是OOP的延续

主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等  

  • ORM

Spring 的ORM模块提供对常用的ORM框架的管理和辅助支持

  • DAO

Spring 提供对JDBC的支持,对JDBC进行封装,

  • WEB

WEB模块提供对常见框架如Struts1,WEBWORK(Struts 2),JSF的支持,Spring能够管理这些框架

  • Context

Context模块提供框架式的Bean访问方式,其他程序可以通过Context访问Spring的Bean资源,相当于资源注入。

  • Web MVC

WEB MVC模块为Spring提供了一套轻量级的MVC实现,在Spring的开发中,我们既可以用Struts也可以用Spring自己的MVC框架,相对于Struts,Spring自己的MVC框架更加简洁和方便。

浅谈spring--AOP与IOC / DI_第1张图片

spring 的优点:

1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦
2.可以使用容易提供的众多服务,事务管理,消息服务
3.容器提供单例模式支持
4.容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能
5.容器提供了众多的辅助类,能加快应用的开发
6.spring对于主流的应用框架提供了集成支持,如hibernate,JPA,Struts等
7.spring属于低侵入式设计,代码的污染极低
8.独立于各种应用服务器
9.spring的DI机制降低了业务对象替换的复杂性
10.Spring的高度开放性,并不强制应用完全依赖于Spring,开发者可以自由选择spring的部分或全部

 spring有两个核心模块:

 

什么是DI / IOC

IOC控制反转主要强调的是程序之间的关系是由容器(spring)控制的,容器控制对象,控制了对外部资源的获取。而反转即为,在传统的编程中都是由我们创建对象获取依赖对象,而在IOC中是容器帮我们创建对象并注入依赖对象,正是容器帮我们查找和注入对象,对象是被获取,所以叫反转。

可以理解为当一个对象a调用另一个对象b的时候,传统的写法是在对象a中把对象b实例化,但是在spring中,a和b对象都是spring初始化并管理的,通过set方法注入或者构造方法注入给b对象的引用。

  1. 控制反转 (IOC)(或者叫做依赖注入(DI ))
  2. Spring 面向切面编程AOP

简单理解:功能对象不是自己实例化,通过注入实现(优点:解决硬编码问题)

浅谈spring--AOP与IOC / DI_第2张图片

什么是AOP

      主要是管理系统层的业务,比如日志,权限,事物等。AOP是将封装好的对象剖开,找出其中对多个对象产生影响的公共行为,并将其封装为一个可重用的模块,这个模块被命名为切面(aspect),切面将那些与业务逻辑无关,却被业务模块共同调用的逻辑提取并封装起来,减少了系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。

浅谈spring--AOP与IOC / DI_第3张图片

  1. 面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。
  2. 在不影响原来功能代码的基础上,使用动态代理加入自己需要的一些功能(比如权限的验证,事务的控制,日志的记录等等),移除之后,并不影响原来的功能
  3. 面向切面编程是通过动态代理实现的,是对面向对象思想的补充。
  4. 可以提供声明式的事务管理。**
  5. spring支持用户自定义的切面。**

aop的advice有哪些

1)before:在执行切入的方法之前,执行代码

2)after returning:在执行切入的方法正常执行(没有异常)之后,执行代码

3)after throwing:在执行切入的方法发生异常的时候,执行代码

4)after:在执行切入的方法无论是否发生异常,都必须最后执行代码

 

aop框架具有的两个特征:
1.各个步骤之间的良好隔离性
2.源代码无关性

 

spring常用的注入方式主要有三种:构造方法注入,set注入,基于注解的注入(详解:http://lib.csdn.net/article/javaee/3298)。

 

你可能感兴趣的:(Java常用框架)