J2EE 应用实践教程第二章 Spring框架笔记1
来源:互联网 发布:数控铣简单图形编程 编辑:程序博客网 时间:2024/05/22 14:58
Spring FrameWork是Java EE应用程序框架,是针对Bean的生命周期进行管理的轻量级容器。该框架的主要优势是分层架构,允许选择使用某个组件。
1.Dependency Inversion
Spring的核心概念是IoC(Inversion of Control,控制反转),要了解IoC,先了解Di(Dependency Inversion,依赖反转)
例如:类Business需要调用UsbDiskWriter的save()方法,日常做法如下:
public class UsbDiskWriter {public void save(){}public class Business{UsbDiskWriter writer;public Business(){writer = new UsbDiskWriter();}public void save(){writer.save();}}}
UsbDiskWriter:底层类, Business高层类
由于Business类的方法save()依赖于类UsbDiskWriter,如果某天要更换底层(被调用)类为FloppyWriter,则这个Business类没有办法重用,必须加以修改:
Business——>UsbDiskWriter 变为 Business——>UsbDiskWriter、FloppyWriter。
底层类的改变(添加了FloppyWriter底层类)造成了高层类(Business)也必须改变,这不是一个好的设计方式。在设计上,希望类都依赖于接口,这样才能重用高层类。
Di依赖反转解释为高层类不依赖于底层类,而是依赖于接口。如下所示:
创建一个接口IWriter:
public interface IWriter {public void write();}
创建一个底层类UsbDiskWriter实现IWriter接口:
public class UsbDiskWriter implements IWriter{@Overridepublic void write() {// TODO Auto-generated method stub//把内容保存到USB盘中}}
创建一个可重用的高层类Business类:
public class Business {IWriter writer;//此处也可以用FloppyWriter对象来构造//通过构造来注入依赖关系public Business(UsbDiskWriter writer){this.writer = writer;}public void save(){writer.write();}}
此代码中,如果需要将内容存储到FloppyWriter或者别的介质中,只需实现IWriter接口就可以了,而不用修改Business。此即反转依赖:
Business——>IWriter<——UsbDiskWriter、FloppyWriter
IoC其实也是一种依赖关系的转移:如果A依赖于B,则B有控制权。
我们可以控制这种关系的转移以获得高层类的重用性。这个控制权从实际的UsbDiskWriter转移到抽象的IWriter接口上,使得Business对象,FloppyWriter类、UsbDiskWriter类都依赖于接口IWriter。
2.Dependency Injection
IoC是一个高层的概念,实现IoC有两种方式,Dependency Injection和Service Locator。Spring采用的是Dependency Injection。
Business依赖于实际的UsbDiskWriter,为了让Business获得重用性,不让Business直接依赖于实际的UsbDiskWriter,而是依赖于抽象的接口。
创建一个接口IWriter:
public interface IWriter {public void write();}
创建一个可重用的高层类Business:
public class Business {private IWriter writer;//通过Setter来注入依赖关系public void setWriter(IWriter writer){this.writer = writer;}public void save(){writer.write();}}
创建一个底层类UsbDiskWriter实现IWriter接口
public class UsbDiskWriter implements IWriter{@Overridepublic void write() {// TODO Auto-generated method stub//把内容保存到USB盘中}}
创建一个底层类FloppyWriter实现IWriter接口
public class FloppyWriter implements IWriter{@Overridepublic void write() {// TODO Auto-generated method stub//把内容保存到Floppy中}}
business.setWriter(new UsbDiskWriter());//使Business与UsbDiskWriter发生依赖关系business.setWriter(new FloppyWriter());//使Business与FloppyWriter发生依赖关系
dependency Injection依赖注入有三种实现方式:
Interface injection(Type 1 IoC)、Setter injection(Type 2 IoC)与Constructor injection(Type 3 IoC)。
Spring鼓励通过Setter,但也允许通过Constructor injection来注入依赖关系。
使用Constructor:可以在构建类的同时完成依赖关系的构建,但如果要建立的类关系很多,构建类时参数会很长,此时建议使用Setter,而且Setter有明确的名称setXXX()。
Type 1 IoC有很强的侵入性,一般不使用。
- J2EE 应用实践教程第二章 Spring框架笔记1
- J2EE 应用实践教程第二章 Spring框架笔记2
- 《深入Spring 2:轻量级J2EE开发框架原理与实践》第二章 Spring概述及入门 .
- 第二章 Spring框架体系结构(Spring Framework3.1教程)
- Spring - Java/J2EE Application Framework 应用框架 第 1 章 简介
- Spring - Java/J2EE Application Framework 应用框架
- Unix/Linux编程实践教程参考答案-----第二章学习笔记
- unix/linux编程实践教程------学习笔记(第二章)
- spring笔记:第二章(1)
- OpenGL ES应用开发实践指南(android 卷)笔记 第二章1
- Spring - Java/J2EE Application Framework 应用框架 第 12 章 Web框架
- BlazeDS+spring整合到J2EE应用的最佳实践
- JAVA学习笔记15——Spring框架第二章
- JAVA学习笔记15——Spring框架第二章
- J2EE第二节笔记
- 笔记·Spring框架第二天
- Spring - Java/J2EE Application Framework 应用框架 第 3 章 Beans, BeanFactory和ApplicationContext
- Spring - Java/J2EE Application Framework 应用框架 第 6 章 集成AspectJ
- FansMail:邮件发送标准API与技术实现(Java)
- 关于程序集Assembly.Load(path)的一些注意事项
- 计算思维
- 面向过程和面向对象
- ubutun12.04下安装ssh
- J2EE 应用实践教程第二章 Spring框架笔记1
- http头信息
- Oracle 10g启动后报ORA-16038错误的解决方法
- 2个span标签,一个是图片 一个是文本,对齐
- java语言基础
- 黑马程序员_java语法基础【3】(函数、数组)
- jsp页面数据格式化
- 按钮的拖拽复制
- 使用Shell脚本对Linux系统和进程资源进行监控