,或者更简单点儿 说“一团糟”。
面向方面编程是一种试图解决这个
问题的编程技术,它把关注点的隔离提升为核心的 编程概念。
通过Spring的AOP,可以解决这个问 图1 SH架构图 题,并在每行代码中做更多的事情。
2.2 SSH架构 这是一个来自Hibernate访问数据对象的函数。
在SSH框架中,Struts负责表示层【6 J,其主要功 public List getReservations(){能为:管理用户的请求,做出相应的响应,提供一个 return流程控制器,委派调用业务逻辑和其他上层处理、处 getHibemateTemplate( ).find(”from Reser-理异常、用户界面的验证。
Spring用于业务层。
该 vation”);层借助了Spring,通过控制反转、AOP应用、面向接 }口编程,来降低业务组件之间的耦合度,增强系统扩 这里没有任何事务处理。
Spring允许建立配置展性。
Spring框架是一个分层架构,由7个定义良 代码去处理它。
不一定要通过Session来管理资源。
好的模块组成。
其中最重要的模块就是核心容器。
不一定写自己的配置。
不一定在这个层次上管理异 万 方数据 56 北京机械工业学院学报 第23卷常,因为这些异常是未经检查的。
可以自由地在最 B b=null: Public setB(B b){适当的位置去管理他们。
没用Spring的Hibernate方法的代码会是这样的: 1his.b=b: public List getBikesOldWay()throws Exception }{ Public do(){ List bikes=null; b.xxx: Session S=null; } try{ } 8=mySessionFactory.openSession(); 在这里,类A和类B是潜在运行时耦合的。
可 bikes=S.find(”from Bike”); 以用类C来替换到类B,而不会影响到类A。
bean } 自己不再负责对象的依赖关系,从而降低对象之间 catch(Exception ex){ 的耦合。
同时让开发者把精力放在业务逻辑的编写 //handle exception gracefully 上。
} 总结IoC的优点在于: finally{ 可以把一些参数的配置通过一个统一的IoC容 S.close(); 器来进行管理。
比如说一个发送邮件服务对象所需 } 要的SMTP服务器、用户名、密码之类的参数。
优点 return bikes; 是不用在类里进行硬编码,不会导致团队中每个开 } 发人员都有自己的配置文件,还有一个自己的配置 Spring可以使编程更快也更容易维护程序。
文件读取帮助类。
一个项目中,执行相同功能的类3.1.2依赖注入实现松耦合 有多个存在没有任何意义。
Java的设计理论中就提出了一条非常著名的原 在接口编程中,IoC帮消除了InterfaceA a=则,依赖倒转原则,其核心思想就是要将具体类之间 new Almpl();这样的代码。
也许将所有服务对象的的依赖,尽量转换成抽象依赖。
依赖注入其实也就 实例化操作都放在一个工具类(例如servicefactory)是所谓的IoC(inversion of contr01)中文译为反转控 中,然后通过这个工具类来进行服务对象的获取。
制。
其含义为:“不用你找,我来提供给你”。
通过 但当替换实现时还是需要改动你的代码。
假设一个下面两段代码来体现依赖注入和传统面向对象实例 模块在另一个项目中进行了复用,但复用的前提是化对象之间的差别。
你需要修改Almpl,这时候你愿意保存两份AImpl 传统的面向对象,对于对象的实例化和对象的 代码,针对不同的项目修改不同的Almpl,还是给另使用是由程序员来完成的。
一段简单的实例化代码 一个应用开发一个Almpl2,然后修改你的Service—是: Factory,保存两份ServiceFactory代码?我想你会选 Public class A{ 择使用IoC的配