Service Loader Processor

Service Loader Processor is a Java Processor to generate a provider-configuration file

Лицензия

Лицензия

Группа

Группа

com.github.marcosemiao
Идентификатор

Идентификатор

serviceloader-processor
Последняя версия

Последняя версия

0.0.6
Дата

Дата

Тип

Тип

jar
Описание

Описание

Service Loader Processor
Service Loader Processor is a Java Processor to generate a provider-configuration file
Ссылка на сайт

Ссылка на сайт

https://github.com/marcosemiao/serviceloader-processor
Система контроля версий

Система контроля версий

https://github.com/marcosemiao/serviceloader-processor

Скачать serviceloader-processor

Как подключить последнюю версию

<!-- https://jarcasting.com/artifacts/com.github.marcosemiao/serviceloader-processor/ -->
<dependency>
    <groupId>com.github.marcosemiao</groupId>
    <artifactId>serviceloader-processor</artifactId>
    <version>0.0.6</version>
</dependency>
// https://jarcasting.com/artifacts/com.github.marcosemiao/serviceloader-processor/
implementation 'com.github.marcosemiao:serviceloader-processor:0.0.6'
// https://jarcasting.com/artifacts/com.github.marcosemiao/serviceloader-processor/
implementation ("com.github.marcosemiao:serviceloader-processor:0.0.6")
'com.github.marcosemiao:serviceloader-processor:jar:0.0.6'
<dependency org="com.github.marcosemiao" name="serviceloader-processor" rev="0.0.6">
  <artifact name="serviceloader-processor" type="jar" />
</dependency>
@Grapes(
@Grab(group='com.github.marcosemiao', module='serviceloader-processor', version='0.0.6')
)
libraryDependencies += "com.github.marcosemiao" % "serviceloader-processor" % "0.0.6"
[com.github.marcosemiao/serviceloader-processor "0.0.6"]

Зависимости

Библиотека не имеет зависимостей. Это самодостаточное приложение, которое не зависит ни от каких других библиотек.

Модули Проекта

Данный проект не имеет модулей.

Service Loader Processor

Fonctionnalités générales

Cette librairie permet de générer pour un fournisseur de service, un fichier de configuration dans le répertoire "META-INF/services" à partir d'une annotation.

  • Facile d'utilisation, il suffit de rajouter la dépendance Maven avec le scope "provided" dans votre application.
  • Disponible sur le repository central de Maven.
  • Compatible à partir de la version Java 6.

Utilisation rapide

  • Ajouter la dépendance dans votre projet :
<dependency>
	<groupId>com.github.marcosemiao</groupId>
	<artifactId>serviceloader-processor</artifactId>
    <scope>provided</scope>
    <version>0.0.6</version>
</dependency>
  • Dans votre implémentation rajouter l'annotation "ServiceLoader" à la compilation le fichier de configuration sera automatiquement crée dans le répertoire "META-INF/services".

Exemple :

Avec une classe "Slf4jMojoLogger" qui implémente une interface "MojoLogger"

il suffit de rajouter l'annotation "ServiceLoader" sur cette classe.

@ServiceLoader
public class Slf4jMojoLogger implements MojoLogger {

    private final static StaticLoggerBinder staticLoggerBinder = StaticLoggerBinder.getSingleton();

    @Override
    public void setMavenLogger(final Log log) {
	staticLoggerBinder.setMavenLog(log);
    }
}

A la compilation, un message previent de la détection d'une implémentation :

[INFO] Service Provider detected
[INFO] ************************************
[INFO] Interface : fr.ms.maven.plugin.MojoLogger
[INFO]                 -> fr.ms.maven.slf4j.impl.Slf4jMojoLogger

A la suite de cela le fichier "META-INF/services/fr.ms.maven.plugin.MojoLogger" est crée avec le contenu suivant :

fr.ms.maven.slf4j.impl.Slf4jMojoLogger

Utilisation avec plusieurs interfaces

Prenons le cas ou votre implémentation utilise plusieurs interfaces.

Re-prenons l'exemple précédent en rajoutant une interface :

@ServiceLoader
public class Slf4jMojoLogger implements MojoLogger, Dummy {

    private final static StaticLoggerBinder staticLoggerBinder = StaticLoggerBinder.getSingleton();

    @Override
    public void setMavenLogger(final Log log) {
	staticLoggerBinder.setMavenLog(log);
    }
}

A la compilation, un message d'erreur previent de l'utilisation de plusieurs interfaces :

[ERROR] fr.ms.maven.slf4j.impl.Slf4jMojoLogger implements many interfaces, please define the interface in the ServiceProvider annotation

Il est donc nécessaire de spécifier la ou les interfaces à utiliser

@ServiceLoader(value = { MojoLogger.class, Dummy.class })
public class Slf4jMojoLogger implements MojoLogger, Serializable {

    private final static StaticLoggerBinder staticLoggerBinder = StaticLoggerBinder.getSingleton();

    @Override
    public void setMavenLogger(final Log log) {
	staticLoggerBinder.setMavenLog(log);
    }
}

A la compilation, un message previent de la détection de plusieurs implémentations :

[INFO] Service Provider detected
[INFO] ************************************
[INFO] Interface : fr.ms.maven.plugin.MojoLogger
[INFO]                 -> fr.ms.maven.slf4j.impl.Slf4jMojoLogger
[INFO] ************************************
[INFO] Interface : fr.ms.maven.plugin.Dummy
[INFO]                 -> fr.ms.maven.slf4j.impl.Slf4jMojoLogger

A la suite de cela deux fichiers sont crées : "META-INF/services/fr.ms.maven.plugin.MojoLogger" est crée avec le contenu suivant :

fr.ms.maven.slf4j.impl.Slf4jMojoLogger

et

"META-INF/services/fr.ms.maven.plugin.Dummy" est crée avec le contenu suivant :

fr.ms.maven.slf4j.impl.Slf4jMojoLogger

PS : Vous pouvez spécifier des super classes à la place des interfaces

Версии библиотеки

Версия
0.0.6
0.0.2
0.0.1