Предположим, я пишу библиотеку и хочу кешировать результат некоторых длительных или хрупких задач.Для этого я использую JCache
API в своем коде.
Так что мой pom.xml
будет содержать запись зависимости, такую как
<dependency>
<groupId>javax.cache</groupId>
<artifactId>cache-api</artifactId>
<version>1.1.1</version>
<scope>provided</scope> <!-- does this even make sense? -->
</dependency>
На основании этого я бы хотел знать, как яМожно ли сделать использование для пользователя настолько простым, насколько это возможно?
Два варианта, которые я вижу, оба неоптимальны, и у меня есть ощущение, что это должна быть какая-то общая "проблема", поэтому, вероятно, существуетОбщее решение, о котором я не знаю.
Я сам предоставляю реализацию API JCache.
+: пользователь / потребитель моей библиотеки может легко использовать егокоробки без необходимости предоставления чего-либо.
-: Если должна использоваться пользовательская, специфичная для пользователя реализация, необходимо исключить эту реализацию из моей библиотеки на уровне maven.
-:При этом возможны потенциальные конфликты между несколькими библиотеками.
Я не предоставляю никакой реализации JCache API.
+: Нет конфликтов с другими библиотеками или любой другой пользовательской реализацией потребителя.из моей библиотекиrary хочет использовать.
-: необходимо предоставить реализацию JCache, даже если потребитель не знает, что кеширование задействовано.
Это выглядит оченьочень похоже на настройку журналирования, где я использую slf4j-api
в своем приложении, и потребитель должен сам обеспечить реализацию.Но логирование кажется мне более распространенным, чем кэширование.