IoC容器和Dependency Injection模式.doc

Similar documents
IoC容器和Dependency Injection模式.doc

EJB-Programming-3.PDF

EJB-Programming-4-cn.doc

untitled

基于CDIO一体化理念的课程教学大纲设计

JBuilder Weblogic

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

J2ME ISBN J2ME MIDP MIDP 2.0 API J2ME Netbeans IDE 4.1 Mobility Pack 4.1 MIDlet MIDlet MIDP PUSH API PDA API Ja

untitled

声 明 本 公 司 及 全 体 董 事 监 事 高 级 管 理 人 员 承 诺 不 存 在 虚 假 记 载 误 导 性 陈 述 或 重 大 遗 漏, 并 对 其 真 实 性 准 确 性 完 整 性 承 担 个 别 和 连 带 的 法 律 责 任 本 公 司 负 责 人 和 主 管 会 计 工 作 的

untitled

优迈科技教学大纲2009版本

<4D F736F F F696E74202D20C8EDBCFEBCDCB9B9CAA6D1D0D0DEBDB2D7F92E707074>

untitled

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

第03章 控制反转(Spring IoC)

Java 1 Java String Date

Microsoft PowerPoint - ch6 [相容模式]

南威软件股份有限公司

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii

epub83-1

FAQ -PowerDesigner9.5.DOC

Microsoft PowerPoint - plan08.ppt

“百企入校——广西青年企业家协会高校

<4D F736F F D20B9FABCD2BBFAB9D8B0ECB9ABBDA8D6FEBACDB4F3D0CDB9ABB9B2BDA8D6FEC4DCBAC4BCE0B2E2CFB5CDB3C8EDBCFEBFAAB7A2D6B8B5BCCBB5C3F7CAE92E646F63>

D C 93 2

序号:001

基于ECO的UML模型驱动的数据库应用开发1.doc

没 有 多 余 的 Contruol 或 Action 了 原 来 Domain 层 被 服 务 层 Service layer 遮 挡, 在 右 边 图 中, 则 Domain 层 直 接 暴 露 给 前 台 了, 没 有 被 遮 挡, 裸 露 了 这 样 一 步 到 位 实 现 领 域 模 型

软 件 工 程 专 业 习 指 南 目 录 一 软 件 工 程 专 业 设 置 背 景 与 发 展 前 景... 3 二 软 件 工 程 专 业 实 践 教 条 件... 4 三 软 件 工 程 专 业 课 程 类 型 及 核 方 式 软 件 工 程 专 业 课 程 类 型...7

教学〔2016〕120号

创业板投资风险提示:本次股票发行后拟在创业板市场上市,该市场具有较高的投资风险

设计模式_Patterns in Java_.doc

<4D F736F F D20312D3120D5D0B9C9CBB5C3F7CAE9A3A8C9EAB1A8B8E5A3A9>

2 Java 语 言 程 序 设 计 教 程 简 单 性 Java 语 言 的 语 法 与 C 语 言 和 C++ 语 言 很 接 近, 使 得 大 多 数 程 序 员 很 容 易 学 习 和 使 用 Java 另 一 方 面,Java 丢 弃 了 C++ 中 很 少 使 用 的 很 难

(procedure-oriented)?? 2


untitled

13 A DSS B DSS C DSS D DSS A. B. C. CPU D. 15 A B Cache C Cache D L0 L1 L2 Cache 16 SMP A B. C D 17 A B. C D A B - C - D

「西醫基層總額支付委員會《第28次委員會議紀錄

天津天狮学院关于修订2014级本科培养方案的指导意见

《大话设计模式》第一章

<4D F736F F D B8BDBCFE332D3120C8EDBCFEB9A4B3CCCBB6CABFC5E0D1F8B7BDB0B8>

untitled

目 录 1. 前 言 为 什 么 要 用 ESB 技 术 发 展 业 务 需 求 IT 需 求 IT 与 业 务 一 致 性 要 求 TongIntegrator ESB v5 简 介..

信息

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

北京北信源软件股份有限公司招股书(申报稿)

chp6.ppt

<4D F736F F D2031A3AD4A617661BCBCCAF5CAC6CDB7D5FDBEA22E646F63>

(Microsoft Word - \272\364\263q\245|\244A_ _\304\254\253\330\336\263__\272\353\302\262\263\370\247i.doc)

发现一:全国医院信息化发展不平衡

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc

RunPC2_.doc

2. AOP 底层技术实现 小风 Java 实战系列教程 关键词 : 代理模式 代理模型分为两种 : 1) 接口代理 (JDK 动态代理 ) 2) 子类代理 (Cglib 子类代理 ) 需求 :CustomerService 业务类, 有 save,update 方法, 希望在 save,updat

Microsoft Word - ch04三校.doc

计算机软件技术专业教学计划

電機工程系認可證照清單 /7/1

Microsoft Word - 王彬_已修改_.doc

1. 2. Flex Adobe 3.

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

Chapter 9: Objects and Classes

Microsoft Word 電腦軟體設計.doc

大连软~1

Learning Java

11 天 山 区 区 环 卫 清 运 队 机 械 工 程 师 4011 C 1 不 限 不 限 机 电 具 有 两 以 工 作 经 12 天 山 区 乌 鲁 木 齐 市 第 15 小 会 计 4012 C 1 不 限 不 限 会 计 财 会 财 电 算 化 临 床 医 预 防 医 公 共 卫 生 与

Microsoft Word - Learn Objective-C.doc

目 录 目 录 平 台 概 述 技 术 架 构 技 术 特 点 基 于 统 一 平 台 的 多 产 品 线 支 撑 先 进 性 安 全 性 开 放 性 高 性 能 和

提问袁小兵:

Microsoft Word - 物件導向編程精要.doc

<313031A4C9BEC7C160BA5DB3E A457BAF4A4BDA769AAA9292E584C53>

nbqw.PDF

内 容 提 要 将 JAVA 开 发 环 境 迁 移 到 Linux 系 统 上 是 现 在 很 多 公 司 的 现 实 想 法, 而 在 Linux 上 配 置 JAVA 开 发 环 境 是 步 入 Linux 下 JAVA 程 序 开 发 的 第 一 步, 本 文 图 文 并 茂 地 全 程 指

weblogic

Microsoft Word - 01.DOC

untitled

PowerPoint Presentation

Chapter 9: Objects and Classes

产品手册: CA GEN r8

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

1.5招募说明书(草案)

ArcGIS Sever.NET ArcGIS Server Web JAVA ArcGIS Server Web

NIIT APP T ECH,,,,,, C++ : C++, C++,,, C++,,,,, : ,,,, ;,, ( CIP) C++ /,,. :, (21.) ISBN C..

Android Android Android SDK iv

RunPCPB8 new feature.PDF

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:


LiveBOS产品白皮书

中 文 摘 要 智 慧 型 手 機 由 於 有 強 大 的 功 能, 以 及 優 渥 的 便 利 性, 還 能 與 網 路 保 持 隨 時 的 鏈 結 與 同 步 更 新, 因 此 深 受 廣 大 消 費 者 喜 愛, 當 然, 手 機 遊 戲 也 成 為 現 代 人 不 可 或 缺 的 娛 樂 之

项目采购需求编写模板

TopTest_Adminstrator.doc

jsp

校友会系统白皮书feb_08

第一章 章标题-F2 上空24,下空24


(HMI) IO A

RUN_PC連載_12_.doc

OSWorkflow Documentation

声 明 本 公 司 及 全 体 董 事 监 事 高 级 管 理 人 员 承 诺 不 存 在 虚 假 记 载 误 导 性 陈 述 或 重 大 遗 漏, 并 对 其 真 实 性 准 确 性 完 整 性 承 担 个 别 和 连 带 的 法 律 责 任 本 公 司 负 责 人 和 主 管 会 计 工 作 的

Transcription:

IoC Dependency Injection /Martin Fowler / Java Inversion of Control IoC Dependency Injection Service Locator Java J2EE open source J2EE J2EE web PicoContainer Spring Java Java OO.NET service component JAR DLL web service RPC socket

class MovieLister... public Movie[] moviesdirectedby(string arg) { List allmovies = finder.findall(); for (Iterator it = allmovies.iterator(); it.hasnext();) { Movie movie = (Movie) it.next(); if (!movie.getdirector().equals(arg)) it.remove(); return (Movie[]) allmovies.toarray(new Movie[allMovies.size()]); moviesdirectedby finder finder finder MovieLister finder moviesdirectedby finder findall finder public interface MovieFinder { List findall(); MovieFinder MovieLister class MovieLister... private MovieFinder finder; public MovieLister() { finder = new ColonDelimitedMovieFinder("movies1.txt");

movie1.txt SQL XML web service MovieFinder moviesdirectedby MovieFinder 1 MovieLister MovieFinder MovieLister MovieFinder Patterns of Enterprise Application Architecture plugin MovieFinder MovieLister MovieFinder MovieLister Inversion of Control

UI MovieLister MovieFinder MovieFinder IoC Dependency Injection Dependency Injection Service Locator Dependency Injection Service Locator Dependency Injection MovieFinder MovieLister 2 Constructor Injection Setter Injection Interface Injection IoC type 1 IoC type 2 type 3 IoC

PicoContainer ThoughtWorks PicoContainer PicoContainer MovieFinder MovieLister MovieLister class MovieLister... public MovieLister(MovieFinder finder) { this.finder = finder; MovieFinder PicoContainer class ColonMovieFinder... public ColonMovieFinder(String filename) { this.filename = filename; PicoContainer MovieFinder private MutablePicoContainer configurecontainer() { MutablePicoContainer pico = new DefaultPicoContainer(); Parameter[] finderparams = {new ConstantParameter("movies1.txt"); pico.registercomponentimplementation(moviefinder.class, ColonMovieFinder.class, finderparams); pico.registercomponentimplementation(movielister.class); return pico; MovieLister PicoContainer NanoContainer XML NanoContainer XML PicoContainer public void testwithpico() { MutablePicoContainer pico = configurecontainer(); MovieLister lister = (MovieLister) pico.getcomponentinstance(movielister.class); Movie[] movies = lister.moviesdirectedby("sergio Leone");

assertequals("once Upon a Time in the West", movies[0].gettitle()); PicoContainer Spring Java web JDBC PicoContainer MovieLister MovieFinder class MovieLister... private MovieFinder finder; public void setfinder(moviefinder finder) { this.finder = finder; MovieFinder String class ColonMovieFinder... public void setfilename(string filename) { this.filename = filename; Spring XML XML <beans> <bean id="movielister" class="spring.movielister"> <property name="finder"> <ref local="moviefinder"/> </property> </bean> <bean id="moviefinder" class="spring.colonmoviefinder"> <property name="filename"> <value>movies1.txt</value> </property> </bean> </beans> public void testwithspring() throws Exception { ApplicationContext ctx = new

FileSystemXmlApplicationContext("spring.xml"); MovieLister lister = (MovieLister) ctx.getbean("movielister"); Movie[] movies = lister.moviesdirectedby("sergio Leone"); assertequals("once Upon a Time in the West", movies[0].gettitle()); Avalon MovieFinder public interface InjectFinder { void injectfinder(moviefinder finder); MovieFinder MovieFinder MovieLister class MovieLister implements InjectFinder... public void injectfinder(moviefinder finder) { this.finder = finder; MovieFinder public interface InjectFilename { void injectfilename (String filename); class ColonMovieFinder implements MovieFinder, InjectFilename... public void injectfilename(string filename) { this.filename = filename; MovieLister lister class IfaceTester... private MovieLister lister; private void configurelister() { ColonMovieFinder finder = new ColonMovieFinder(); finder.injectfilename("movies1.txt"); lister = new MovieLister(); lister.injectfinder(finder);

class IfaceTester... public void testiface() { configurelister(); Movie[] movies = lister.moviesdirectedby("sergio Leone"); assertequals("once Upon a Time in the West", movies[0].gettitle()); Service Locator MovieLister MovieFinder MovieLister MovieFinder Dependency Injection Service Locator Service Locator MovieFinder MovieLister 3 ServiceLocator Singleton MovieLister ServiceLocator MovieFinder class MovieLister... MovieFinder finder = ServiceLocator.movieFinder(); class ServiceLocator...

public static MovieFinder moviefinder() { return soleinstance.moviefinder; private static ServiceLocator soleinstance; private MovieFinder moviefinder; class Tester... private void configure() { ServiceLocator.load(new ServiceLocator(new ColonMovieFinder("movies1.txt"))); class ServiceLocator... public static void load(servicelocator arg) { soleinstance = arg; public ServiceLocator(MovieFinder moviefinder) { this.moviefinder = moviefinder; class Tester... public void testsimple() { configure(); MovieLister lister = new MovieLister(); Movie[] movies = lister.moviesdirectedby("sergio Leone"); assertequals("once Upon a Time in the West", movies[0].gettitle()); ServiceLocator ServiceLocator ServiceLocator ServiceLocator ServiceLocator Singleton Singleton

MovieLister ServiceLocator MovieLister ServiceLocator MovieLister ServiceLocator MovieLister MovieFinder public interface MovieFinderLocator { public MovieFinder moviefinder(); MovieFinder MovieFinderLocator locator = ServiceLocator.locator(); MovieFinder finder = locator.moviefinder(); public static ServiceLocator locator() { return soleinstance; public MovieFinder moviefinder() { return moviefinder; private static ServiceLocator soleinstance; private MovieFinder moviefinder; ServiceLocator ServiceLocator ServiceLocator map ServiceLocator class ServiceLocator... private static ServiceLocator soleinstance; public static void load(servicelocator arg) { soleinstance = arg; private Map services = new HashMap(); public static Object getservice(string key){ return soleinstance.services.get(key); public void loadservice (String key, Object service) {

services.put(key, service); class Tester... private void configure() { ServiceLocator locator = new ServiceLocator(); locator.loadservice("moviefinder", new ColonMovieFinder("movies1.txt")); ServiceLocator.load(locator); class MovieLister... MovieFinder finder = (MovieFinder) ServiceLocator.getService("MovieFinder"); Dependency Injection Service Locator Avalon Avalon Berin Loritsch Avalon public class MyMovieLister implements MovieLister, Serviceable { private MovieFinder finder; public void service( ServiceManager manager ) { throws ServiceException finder = (MovieFinder)manager.lookup("finder"); service ServiceManager MyMovieLister ServiceManager MyMovieLister ServiceManager MovieFinder Dependency Injection Service

Locator Service Locator Dependency Injection Service Locator Dependency Injection Service Locator Service Locator Service Locator Dependency Injection Dependency Injection Service Locator IDE MovieLister Dependency Injection MovieLister API Dependency Injection Dependency Injection Dependency Injection Dependency Injection Service Locator

Dependency Injection EJB - plugin Test Driven Development TDD Service Locator Kent Beck Smalltalk Best Practice Patterns Constructor Method Constructor Parameter Method initfoo Factory Method Factory Method

Dependecy Injection XML XML XML builder Java

Service Locator Dependency Injection Dependency Injection Service Locator aspect oriented PicoContainer http://www.picocontainer.org Spring http://www.springframework.org Dependency Injection Service Locator Service Locator Dependency Injection Dependency Injection Service Locator Dependency Injection Rod Johnson Paul Hammant Joe Walnes Aslak Hellesoy Jon Tirsen Bill Caputo

Berin Loritsch Hamilton Verissimo de Oliveira Avalon