`
forestking
  • 浏览: 43832 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java ServiceLoader sample

阅读更多

1, 什么是ServiceLoader:

A service is a well-known set of interfaces and (usually abstract) classes. A service provider is a specific implementation of a service. The classes in a provider typically implement the interfaces and subclass the classes defined in the service itself. Service providers can be installed in an implementation of the Java platform in the form of extensions, that is, jar files placed into any of the usual extension directories. Providers can also be made available by adding them to the application's class path or by some other platform-specific means.------摘自jave API doc

2, 如何使用ServiceLoader:

   有一个简单的例子(复杂的原理应该是一样的吧。。。)

   1, 新建一个工程ServiceLoaderTest




 
  2, java代码没有什么特别的,一个Interface IMessager和它的一个实现HelloWorld

  3, 特别的地方在于META-INF/services/com.wsy.test.IMessager这个文件,首先位置是固定的, META-INF/services, 其次名字是固定的,必须是service(也就是借口)的全限定名,第三内容也是固定的,每行是实现的类名,在这里是com.wsy.test.impl.HelloWorld。如果是多个实现,就写多行,后面我们会看到,可以根据从这些实现中挑选需要需要的

  4, 必须要把这个工程打包成jar(没试过war,或者ear,应该也可以吧),我试过在eclipse中让测试工程引用这个工程,貌似是不行的;必须打包,然后加入测试工程的classpath;

  5, 在测试工程中可以像如下代码那样使用:



 3 后记

    貌似这是一个很有趣的功能,面向接口编程,可以在多个实现中选择,而且使用也很方便,不是很繁琐,不需要容器。一个不便之处在于必须要打包才能使用(这个可能是META-INF目录的原因吧,难道这个目录只在jar包里才生效?)。

  • 大小: 14.5 KB
  • 大小: 22.8 KB
分享到:
评论
1 楼 freesky_zh 2012-10-17  
不错,写得很清楚。就是要达成jar被引用才可以使用。
可以把文中的代码放在Main.java 的main方法中。
把ServiceLoaderTest 工程export成jar包,被自身引用,运行Main.java 的main方法即可。
也可以把jar包放在别的工程中使用。

相关推荐

    JAVA_sample_150.rar_JavaPOS_Sample.zi_java samp_java sample

    "JAVA_sample_150.rar_JavaPOS_Sample.zi_java samp_java sample"这个标题暗示了我们正在处理一个包含150个Java编程示例的压缩文件,这些示例可能覆盖了Java的基础和进阶特性,旨在帮助初学者更好地理解和掌握Java...

    java例子sample

    Java例子sample是一个典型的编程教学资源,它通常包含一系列用Java语言编写的示例代码,用于帮助初学者理解和掌握Java编程的基础概念以及高级特性。在这个压缩包中,"Sample"可能是目录名,也可能是一个单独的Java...

    java-sample-3_java_

    "java-sample-3_java_"这个标题暗示我们这是一个关于Java编程的示例代码集合,可能包含了多个示例项目或代码片段,用于展示Java语言的不同特性和用法。描述中的"java sample code files"进一步确认了这一点,这可能...

    java sample socket demo

    在这个"java sample socket demo"中,我们有两个主要的文件:SocketServer和SocketClient,分别代表服务器端和客户端。 首先,让我们深入理解Socket的概念。在Java中,Socket是java.net包的一部分,它提供了用于在...

    java-sample-5_java_

    "java-sample-5_java_" 这个标题暗示我们正在处理一个与Java相关的示例项目,可能是为了教学目的或者演示某个特定的编程概念或技术。 在描述中提到的 "code file for a sample project in java",表明这是一个包含...

    src.rar_minijava_minijava-sample

    这个名为"src.rar_minijava_minijava-sample"的压缩包包含了实现MiniJava编译器的关键组件,让我们逐一剖析这些文件的作用。 1. **MiniJavaParser.java**:这是MiniJava语法解析器的实现,基于词法分析器生成的语法...

    smpp.rar_SMPP java_java SMPP sample_java smpp_sm_smpp.rar

    标题"smpp.rar_SMPP java_java SMPP sample_java smpp_sm_smpp.rar"提及的核心是"SMPP",这是一种基于Java实现的点对点短消息发送协议的开发包源码。"SMPP"全称为"Short Message Peer-to-Peer",是一个开放的标准...

    java-sample_java_Gradle_

    本项目“java-sample_java_Gradle_”显然是一个包含Java代码示例并使用Gradle进行构建管理的项目。 Gradle是基于Apache Ant和Maven概念的,但它引入了一种领域特定语言(DSL),使得构建脚本更加简洁和可读。它支持...

    java-sample-4_java_

    标题中的"java-sample-4_java_"表明这是一个关于Java编程的示例代码库,可能是第四个版本或迭代。描述中提到的"sample java code files with gradle"揭示了这个压缩包包含的是使用Gradle构建系统的Java代码示例。...

    gatling Java Test sample

    基于moto 开源的java测试架构 gatling 实现的测试用例书写方式

    Test Java Sample

    在Java编程领域,"Test Java Sample"这一主题涵盖了类初始化以及Java相关的谜题。下面将对这些关键知识点进行深入探讨。 首先,让我们关注类初始化。在Java中,类的初始化是一个重要的过程,它涉及到类变量的初始化...

    java web sample

    从给定的文件信息来看,标题“java web sample”与描述“ssh web project sample”以及标签“spring struts hibernate”共同指向了Java Web开发领域中的一个具体项目示例,尤其是涉及Spring、Struts和Hibernate这三...

    spark-java-sample:使用Spark Java的示例项目

    本项目是一个名为"spark-java-sample"的示例项目,旨在帮助初学者了解如何使用Spark Java进行开发。 **1. Spark Java 框架介绍** Spark Java 框架的核心理念是“简明扼要”。它的设计灵感来源于Sinatra,一个Ruby...

    java live search sample

    Java Live Search Sample是一个示例项目,它展示了如何利用Java编程语言来调用LiveSearch的API进行实时搜索。在这个项目中,我们将深入探讨Java与外部API交互的基础知识,以及如何利用这些技术来提升用户体验,实现...

    docker-java-sample:一个简单的Java示例,显示了如何使用Docker打包Java应用程序

    docker-java-sample:一个简单的Java示例,显示了如何使用Docker打包Java应用程序

    java mader c sample1

    【标题】"java mader c sample1"是一个项目或教程示例,旨在向学习者展示如何在Java编程中应用“中国思维”的C式编程风格。这个主题可能涉及到将C语言的一些设计模式和习惯用法转化为Java语言,以适应Java的特性。 ...

    JavaSample:Java样本程序

    JavaSample: Java样本程序 JavaSample是一个典型的Java项目示例,它涵盖了Java编程语言的核心概念和技术,旨在帮助初学者和有经验的开发者更好地理解和实践Java编程。在这个项目中,你可以找到各种类型的Java代码...

    大学编译原理实验Sample词法分析器.java

    a) 启动程序后,先输出...非法字符,即不是SAMPLE字符集的符号; 字符常数缺右边的单引号(字符常数要求左、右边用单引号界定,不能跨行); 注释部分缺右边的界符*/(注释要求左右边分别用/*和*/界定,不能跨行)。

    Java send mail sample

    NULL 博文链接:https://tgwall.iteye.com/blog/1735704

    connectpay-java-sample:Connect Pay Java集成样本

    connectpay-java-sample TossPayments Connect Pay集成开发的Java示例代码。 由Spring Boot组成。 测试 $ git clone https://github.com/tosspayments/connectpay-java-sample.git $ cd conectpay-java-sample $ ./...

Global site tag (gtag.js) - Google Analytics