初识Spring——Spring 学习之一 推荐
2007-09-17 23:57
411 查看
[align=center] [/align]
回来了……
项目初定的用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: 你可能会这样写出这样的程序,如图
[align=center][/align]
[align=center]图1-1[/align]
本例中,直接在高层应用中调用底层模块API,导致应用程序对底层模块产生依赖。如果现在要把数据存在USB磁盘,则这个程序将无法使用。
为了“解耦”,实现依赖关系的转移,定义接口:
程序不应依赖于实现,而是应依赖于抽象的接口,定义Business类,遇到存档时让其依赖于IDeviceWriter,而不是FloppyWriter.
接着定义IDevieceWriter的具体实现,如FloppyWriter,(UsbDiskWrter 类似)
则修改后的的程序模型变为:
[align=center][/align]
从图中可以看出,应用程序与具体实现成功解耦,具体调用生什么实现由配置文件决定。
6.AOP(Aspect-oriented Programming)
简单理解就是,在不修改原程序代码的前提下,为原程序提供更多的功能。例如:某个运用程序有Logging的需求,你可以不修改任何一行代码,加入或者移除这个需求,(当然需要修改配置文件)。
7、依赖注入(Dependency Injection)
意义:保留抽象的接口,让组件(Compoment)来继承抽象接口,当组件要与其它实际对象发生依赖关系时,由抽象接口来注入实际对象。 依赖注入一般有以下三种形式:
1)、通过setXXX()方法来注入所依赖的对象。
2)、在构造方法中(constructor)中注入依赖关系。类似与setXXX方法,一般在调用构造函数时传入依赖对象。
3)、Interface injection,接口定义位于容器API,使用时要求实现接口,具有较强的侵入性,降低组件的可重用性,不推荐使用。
声明:学习笔记中的源代码,及相关知识均来自《Spring2.0技术手册》林信良 (2007),仅供学习交流,请勿它用!
回来了……
项目初定的用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: 你可能会这样写出这样的程序,如图
[align=center][/align]
[align=center]图1-1[/align]
本例中,直接在高层应用中调用底层模块API,导致应用程序对底层模块产生依赖。如果现在要把数据存在USB磁盘,则这个程序将无法使用。
为了“解耦”,实现依赖关系的转移,定义接口:
public interface IDeviceWriter { public void saveToDevice(); } |
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(); } } |
public class FloppyWriter implements IDeviceWriter { public void saveToDevice() { System.out.println("储存至软盘..."); } } |
[align=center][/align]
从图中可以看出,应用程序与具体实现成功解耦,具体调用生什么实现由配置文件决定。
6.AOP(Aspect-oriented Programming)
简单理解就是,在不修改原程序代码的前提下,为原程序提供更多的功能。例如:某个运用程序有Logging的需求,你可以不修改任何一行代码,加入或者移除这个需求,(当然需要修改配置文件)。
7、依赖注入(Dependency Injection)
意义:保留抽象的接口,让组件(Compoment)来继承抽象接口,当组件要与其它实际对象发生依赖关系时,由抽象接口来注入实际对象。 依赖注入一般有以下三种形式:
1)、通过setXXX()方法来注入所依赖的对象。
2)、在构造方法中(constructor)中注入依赖关系。类似与setXXX方法,一般在调用构造函数时传入依赖对象。
3)、Interface injection,接口定义位于容器API,使用时要求实现接口,具有较强的侵入性,降低组件的可重用性,不推荐使用。
声明:学习笔记中的源代码,及相关知识均来自《Spring2.0技术手册》林信良 (2007),仅供学习交流,请勿它用!
相关文章推荐
- 【推荐】springboot学习笔记-6 springboot整合RabbitMQ
- Spring学习(一)初识spring
- 推荐几个Spring Cloud学习资料
- 推荐一个学习SpringBoot的博客
- Spring学习进阶(一)初识Spring
- 学习Spring的一些不错的推荐
- SpringMVC学习(1):初识SpringMVC
- 推荐一个找到一个比较好的spring,java学习教程
- spring4学习记录01-初识spring
- Quartz学习笔记(二) 转自 learnworld 之 spring任务调度方法之Quartz (推荐)
- Spring源码学习-容器初始化之FileSystemXmlApplicationContext(二)路径格式及解析方式(上) 推荐
- 学习Spring cloud第二课(初识Spring cloud)
- Spring学习(1)------初识Spring
- Spring源码学习-含有通配符路径解析(上) 推荐
- SpringMVC学习(1):初识SpringMVC
- 推荐几个Spring Cloud学习资料
- Spring 学习记录7 初识XmlWebApplicationContext
- springboot学习: 初识Spring Boot框架,搭建第一个项目!
- Spring boot学习笔记 001——初识Spring boot
- Spring学习笔记2——初识Spring MVC