初识Spring――Spring 学习之一

 
回来了……
项目初定的用 EXT+DWR Struts) Spring+Hibernate 框架来写,需要准备的知识很多。首先从 Spring 开始吧,一个个来,会把它们全高清楚的。不说这么多了,开始吧……
首先了解概念、术语:
1 .何谓 Spring
Spring 是个一个全方位的应用程序框架( Application framework ),它是实现 IOC(Inversion of Control) 容器和非侵入性的框架,并提供 AOP(Aspect-oriented programming) 概念的实现方式。
此外,提供 Persistence, Transaction 的支持, MVC 的实现方式,对于现存的各种框架( struts JSF, Hibernate 等), Spring 也提供了与它们相整合的方案。
2 .轻量级( Lightweight
相对于一些重量级的容器(如 EJB 容器)来说的,spring核心包在文件容量上只有不到 1MB 。轻量级致力于用更简单、更易于管理的方式提供更多的“即开即用”的 J2EE 服务,尽量隐藏框架本身,使开发者首先使用 POJO 而不是 EJB.
3 .非侵入性( NO intrusive
使框架与应用程序向分离,应用程序不使用 Spring API ,保证应用程序的独立性,提供程序组件的复用性。
4 .容器( container
容器可以管理对象的生成、资源的取得、销毁等生命周期,甚至建立对象与对象之间的依赖关系。只要容器启动,就能方便获得容器中的实例。
5 Inversion of Control Dependency injection
Inversion of Control 翻译成“控制反转”显得有些牵强,更好的理解应为:依赖关系的转移,依赖于抽象而非实践, IOC 可以避免对象之间的耦合,避免应用程序依赖于容器的功能,从而脱离容器。
Example: 你可能会这样写出这样的程序,如图
1 1
  本例中,直接在高层应用中调用底层模块 API ,导致应用程序对底层模块产生依赖。如果现在要把数据存在 USB 磁盘,则这个程序将无法使用。
为了“解耦”,实现依赖关系的转移,定义接口:
 
 public interface IDeviceWriter {
       public void saveToDevice();
}
程序不应依赖于实现,而是应依赖于抽象的接口,定义 Business 类,遇到存档时让其依赖于 IDeviceWriter ,而不是 FloppyWriter.
public class Business {
       private IDeviceWriter writer;
      public void setDeviceWriter(IDeviceWriter writer) {
              this.writer = writer;
       }
       public IDeviceWriter getDeviceWriter() {
              return writer;
       }
       public void save() {
              if(writer == null) {
                     throw new RuntimeException("DeviceWriter needed...");
              }
              writer.saveToDevice();
       }
}
 
接着定义 IDevieceWriter 的具体实现,如 FloppyWriter,(UsbDiskWrter 类似 )
public class FloppyWriter implements IDeviceWriter {
       public void saveToDevice() {
              System.out.println(" 储存至软盘 ...");
       }
}
则修改后的的程序模型变为:
从图中可以看出,应用程序与具体实现成功解耦,具体调用生什么实现由配置文件决定。
 
6 AOP(Aspect-oriented Programming)
简单理解就是,在不修改原程序代码的前提下,为原程序提供更多的功能。例如:某个运用程序有 Logging 的需求,你可以不修改任何一行代码,加入或者移除这个需求,(当然需要修改配置文件)。
7、依赖注入 (Dependency Injection)
意义:保留抽象的接口,让组件( Compoment )来继承抽象接口,当组件要与其它实际对象发生依赖关系时,由抽象接口来注入实际对象。 依赖注入一般有以下三种形式:
1) 、通过 setXXX ()方法来注入所依赖的对象。
2) 、在构造方法中( constructor )中注入依赖关系。类似与 setXXX 方法,一般在调用构造函数时传入依赖对象。
3) Interface injection, 接口定义位于容器 API ,使用时要求实现接口,具有较强的侵入性,降低组件的可重用性,不推荐使用。
  
  声明:学习笔记中的源代码,及相关知识均来自《 Spring2.0 技术手册》林信良 2007 ),仅供学习交流,请勿它用!

本文出自 “Grow up” 博客,转载请与作者联系!

你可能感兴趣的:(spring,职场,概念,术语,休闲)