高级java工程师-----spring的IOC和AOP

来源:互联网 发布:爱淘宝红包怎么领 编辑:程序博客网 时间:2024/05/22 07:54

spring在SSH中主要的作用是什么呢?

第一就是IOC(依赖注入或者控制反转):

SSH框架的流程大致是:Jsp页面----Struts------Service(业务逻辑处理类)---Hibernate(左到右)struts负责控制Service(业务逻辑处理类),从而控制了Service的生命周期,这样层与层之间的依赖和强,属于耦合。要在action中实现一个具体业务就需要调用至少一个service业务组件,service业务组件至少实例化一个dao组件,这样的一个业务使actionservicedao层的耦合度相当高,spring就是依赖注入的原理首先是面向接口编程,提供service业务组件接口层和dao组件接口,当action实现一个业务的时候只需要调用service组件接口和dao组件接口,那么这些接口怎么实例化呢?早期有使用工厂设计模式来实例化接口,spring出现之后是提供一个xml的配置文件将接口实现类的路径和接口对象以bean的形式配入,可以通过propertity或者contruct的形式注入其他的实例(比如servicebean中注入daobean,最后在actionservice的实现类添加set方法或者带参构造方法,这样ation层和service层和dao层就完全分离了实现了高度解耦,而在以往单独使用Struts框架的时候,所有的业务方法类的生命周期,甚至是一些业务流程都是由Action来控制的。层与层之间耦合性太紧密了,既降低了数据访问的效率又使业务逻辑看起来很复杂,代码量也很多。在spring容器启动时来实例化引用,降低了程序的依赖性,如果某个业务逻辑发生变化,可以重新写一个新的业务逻辑实现类,修改spring的配置文件即可,不用每个action代码中去改new的对象,这就是依赖注入。

其实这种思想是spring用到的另一种设计模式叫做桥接模式,主要思想是指当将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化,就好像service组件和dao组件,早期没有用mvc框架思想的时候就是实现一个service组件就会将需要调用的dao组件绑定,这就需要将这种多维度的变化分开使它们独立的变化,spring就很好的使用了该设计模式达到解耦代码简易的效果可扩展性强。


第二就是AOP:

首先AOP是Aspect-oriented programing 是面向切面编程的核心思想

系统功能主要意思是   独立的服务运行时通过动态代理从切面中织入到流程之中

主要作用:1、对程序解耦,提高程序的可扩展性

          2、通过动态代理,和配置文件或者注解形式配置advice、pointcut,从而集中式将独立的服务动态的切入到业务流程之中,降低了编码量,通过配置操作简单

0 0
原创粉丝点击