ServiceLoader使用和创建组件的内容区分开来
2010-10-29 00:00
246 查看
package com.cn.test.beanload;
public interface IPersonalServant {
// Process a file of commands to the servant
public void process(java.io.File f)
throws java.io.IOException;
public boolean can(String command);
}
package com.cn.test.beanload;
import java.io.File;
public class Jeeves implements IPersonalServant {
public void process(File f) {
System.out.println("Very good, sir.");
}
public boolean can(String cmd) {
if (cmd.equals("fetch tea"))
return true;
else
return false;
}
}
package com.cn.test.beanload;
import java.io.File;
import java.io.IOException;
import java.util.ServiceLoader;
public class Servant {
public static void main(String[] args)
throws IOException
{
ServiceLoader servantLoader =
ServiceLoader.load(IPersonalServant.class);
IPersonalServant i = null;
for (IPersonalServant ii : servantLoader)
if (ii.can("fetch tea"))
i = ii;
if (i == null)
throw new IllegalArgumentException("No suitable servant found");
for (String arg : args)
{
i.process(new File(arg));
}
}
}
使用时需要META-INF/services/com.cn.test.beanload.IPersonalServant 文件
内容为com.cn.test.beanload.Jeeves
将项目打包成jar后,加入工程,调用Servant .
public interface IPersonalServant {
// Process a file of commands to the servant
public void process(java.io.File f)
throws java.io.IOException;
public boolean can(String command);
}
package com.cn.test.beanload;
import java.io.File;
public class Jeeves implements IPersonalServant {
public void process(File f) {
System.out.println("Very good, sir.");
}
public boolean can(String cmd) {
if (cmd.equals("fetch tea"))
return true;
else
return false;
}
}
package com.cn.test.beanload;
import java.io.File;
import java.io.IOException;
import java.util.ServiceLoader;
public class Servant {
public static void main(String[] args)
throws IOException
{
ServiceLoader servantLoader =
ServiceLoader.load(IPersonalServant.class);
IPersonalServant i = null;
for (IPersonalServant ii : servantLoader)
if (ii.can("fetch tea"))
i = ii;
if (i == null)
throw new IllegalArgumentException("No suitable servant found");
for (String arg : args)
{
i.process(new File(arg));
}
}
}
使用时需要META-INF/services/com.cn.test.beanload.IPersonalServant 文件
内容为com.cn.test.beanload.Jeeves
将项目打包成jar后,加入工程,调用Servant .
相关文章推荐
- ofbiz修复bug——使用内容组件创建博客文章时报错
- qml学习-------------使用Loader动态创建和删除组件
- C# 使用Vici WinService组件来创建Windows服务
- Flex之旅:第二部分:容器与布局(7)---使用IdeferredInstance 创建模板,实现组件的延迟加载
- Android编程权威指南(第二版)学习笔记(八)—— 第8章 使用布局与组件创建用户界面
- vue组件的开发使用-组件的创建
- WCF Data Service 使用小结(二) —— 使用WCF Data Service 创建OData服务
- 【Android四大组件之Service】(二)Android中Service的使用详解和注意点(LocalService),及startService与bindService的区别
- C++层Service的创建与使用
- Angular4记账webApp练手项目之五(Angular4项目中创建service(服务)和使用http模块)
- Android -- service 服务的创建与使用,生命周期,电话监控器
- MVC文件上传09-使用客户端jQuery-File-Upload插件和服务端Backload组件让每个用户有专属文件夹,并在其中创建分类子文件夹
- ionic组件的创建和使用
- SP2010开发和VS2010专家"食谱"--第四章节—列表定义和内容类型(3)--使用对象模型创建自定义内容类型
- 使用Bot Service创建Bot Framework
- 使用 Professional PowerToy TimerShot 为WindowsXPEmbedded创建自定义组件
- 使用angular创建一个service
- 使用FileReader API创建一个Vue的文件阅读器组件
- android四大组件之Service 模仿支付功能(AIDL使用)
- 使用 Web 2.0 创建协作和动态的方法内容