重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要介绍了如何使用maven构建java9 service,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
成都网站设计、成都网站制作的开发,更需要了解用户,从用户角度来建设网站,获得较好的用户体验。创新互联公司多年互联网经验,见的多,沟通容易、能帮助客户提出的运营建议。作为成都一家网络公司,打造的就是网站建设产品直销的概念。选择创新互联公司,不只是建站,我们把建站作为产品,不断的更新、完善,让每位来访用户感受到浩方产品的价值服务。
maven
整个工程跟传统maven多module的工程结构一样,java9的一个module对应maven project的一个module。下面是根目录下的pom文件:
4.0.0 com.example java9-service-demo 0.0.1-SNAPSHOT consumer-demo service-sort service-sort-bubble service-sort-merge pom UTF-8 9 9 org.apache.maven.plugins maven-compiler-plugin 3.6.1 9
这里管理了一个maven-compiler-plugin,配置release为9,因为java9支持multi release,可以同时支持多个java版本,这里编译为java9版本。
service-sort
这个是service接口module
module service.sort { exports service.sort; uses service.sort.SortService; }
这里同时声明uses SortService表示是它需要在这个module里头使用ServiceLoader去加载service实例
public interface SortService { publicList sortList(List list); public static SortService getProviderInstanceLazy() { Stream > providers = ServiceLoader.load(SortService.class) .stream(); //provider方法等到get的时候才会实例化 SortService service = providers.map(Provider::get) .findAny() .orElse(null); return service; } }
这里在声明接口的同时,也增加了静态方法,用于加载service实例。
service-sort-bubble
maven
java9-service-demo com.example 0.0.1-SNAPSHOT 4.0.0 com.example service-sort-bubble jar com.example service-sort 0.0.1-SNAPSHOT
这里添加对api包的依赖
module-info.java
module service.sort.bubble { requires service.sort; provides service.sort.SortService with sort.impl.bubble.BubbleSort; }
这里声明了BubbleSort提供了SortService的实现
BubbleSort
public class BubbleSort implements SortService { publicList sortList(List list) { System.out.println("use BubbleSort"); for (int outer = 0; outer < list.size() - 1; outer++) { for (int inner = 0; inner < list.size()-outer-1; inner++) { if (list.get(inner).compareTo(list.get(inner + 1)) > 0) { swap(list, inner); } } } return list; } private void swap(List list, int inner) { T temp = list.get(inner); list.set(inner, list.get(inner + 1)); list.set(inner + 1, temp); } }
service-sort-merge
maven
java9-service-demo com.example 0.0.1-SNAPSHOT 4.0.0 com.example service-sort-merge jar com.example service-sort 0.0.1-SNAPSHOT
module-info.java
module service.sort.merge { requires service.sort; provides service.sort.SortService with sort.impl.merge.MergeSort; }
这里声明了MergeSort为SortService接口的实现
MergeSort
import java.util.List; import java.util.ArrayList; import java.util.Collections; import java.util.Arrays; import service.sort.SortService; public class MergeSort implements SortService { publicList sortList(List list) { System.out.println("using MergeSort"); Collections.sort(list); return list; } }
consumer
maven
java9-service-demo com.example 0.0.1-SNAPSHOT 4.0.0 com.example consumer-demo jar com.example service-sort 0.0.1-SNAPSHOT
注意这里没有添加实现类的依赖
module-info.java
module consumer { requires service.sort; }
Main
public class Main { public static void main(String[] args) { System.out.println("sort service consumer started."); Listdata = new ArrayList (); data.add(5); data.add(3); data.add(10); data.add(2); data.add(8); SortService sortService = SortService.getProviderInstanceLazy(); if (sortService != null) { sortService.sortList(data); } System.out.println(data); System.out.println("finish"); } }
编译及运行
编译
mvn clean install
这里是在根目录下执行
使用bubble
复制代码 代码如下:
java --module-path ./consumer-demo/target/consumer-demo-0.0.1-SNAPSHOT.jar:./service-sort/target/service-sort-0.0.1-SNAPSHOT.jar:./service-sort-bubble/target/service-sort-bubble-0.0.1-SNAPSHOT.jar --module consumer/consumer.Main
注意这里添加了bubble的jar到module-path
输出
sort service consumer started.
use BubbleSort
[2, 3, 5, 8, 10]
finish
使用merge
复制代码 代码如下:
java --module-path ./consumer-demo/target/consumer-demo-0.0.1-SNAPSHOT.jar:./service-sort/target/service-sort-0.0.1-SNAPSHOT.jar:./service-sort-merge/target/service-sort-merge-0.0.1-SNAPSHOT.jar --module consumer/consumer.Main
注意这里添加了merge的jar到module-path
输出
sort service consumer started.
using MergeSort
[2, 3, 5, 8, 10]
finish
两个service实现都添加
复制代码 代码如下:
java --module-path ./consumer-demo/target/consumer-demo-0.0.1-SNAPSHOT.jar:./service-sort/target/service-sort-0.0.1-SNAPSHOT.jar:./service-sort-bubble/target/service-sort-bubble-0.0.1-SNAPSHOT.jar:./service-sort-merge/target/service-sort-merge-0.0.1-SNAPSHOT.jar --module consumer/consumer.Main
或者
复制代码 代码如下:
java --module-path ./consumer-demo/target/consumer-demo-0.0.1-SNAPSHOT.jar:./service-sort/target/service-sort-0.0.1-SNAPSHOT.jar:./service-sort-merge/target/service-sort-merge-0.0.1-SNAPSHOT.jar:./service-sort-bubble/target/service-sort-bubble-0.0.1-SNAPSHOT.jar --module consumer/consumer.Main
输出
sort service consumer started.
use BubbleSort
[2, 3, 5, 8, 10]
finish
发现貌似跟添加到path的顺序没有关系,即使把merge的jar包放在前面,也是使用bubble
感谢你能够认真阅读完这篇文章,希望小编分享的“如何使用maven构建java9 service”这篇文章对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,更多相关知识等着你来学习!