【发布时间】:2019-04-03 08:11:04
【问题描述】:
我正在使用 Google Directions API 获取两点之间的路线。目前,我只是向 API 端点发送一个 HTTP 请求,如下所示:
URL url;
URLConnection request;
try {
url = new URL(
"https://maps.googleapis.com/maps/api/directions/json" +
"?origin=Alzenau" +
"&destination=Dortmund&" +
"key=xxxxxxxxxxxx"
);
request = url.openConnection();
request.connect();
// Convert to a JSON object
JsonParser jp = new JsonParser();
JsonElement root = jp.parse(new InputStreamReader((InputStream) request.getContent()));
JsonObject rootobj = root.getAsJsonObject();
ConvertRoutes(rootobj);
} catch (IOException ex) {
ex.printStackTrace();
}
但是,我可以使用一个 Google 依赖项来实现相同的目标:https://mvnrepository.com/artifact/com.google.maps/google-maps-services/0.9.3
此依赖项包含所有 Google Maps API(路线、地点等)
我的问题:当我只使用 Google 的一小部分功能时,使用来自 Google 的依赖项是否有意义? Java 是加载整个依赖项,还是只加载我实际使用的部分?
谢谢!
【问题讨论】:
-
您可以只加载您实际使用的依赖项,然后排除所有传递依赖项,这些依赖项可能不被您使用,但被 api 的其他功能(您仍然不使用)使用)
-
这取决于库的构建方式,但它可能会加载比需要更多的类。但这真的会是个问题吗?你有记忆力吗?
-
@Lino 据我所知,Google 依赖项将其所有 API 都包含在一个依赖项中,因此我无法排除其中一个,因为它们都驻留在同一个工件中
-
@Thomas 使用库完全没有问题,我只是想知道我应该考虑什么“最佳实践”
-
@Lino 我会小心排除传递依赖项,因为很难检查这些依赖项是否以某种方式在某些调用堆栈中使用。
标签: java maven dependencies