Implémentation et utilisation de plug-ins
Créez une classe de démarrage de plug-in en déclarant l'annotation @Plugin
sur une classe qui implémente l'interface IPlugin, qui sera chargée et gérée par la fabrique de plug-ins. inclure plusieurs classes de démarrage de plug-in, chaque classe de démarrage de plug-in peut implémenter sa propre interface métier pour fournir des services externes @Plugin
注解来创建插件启动类,其将被插件工厂加载和管理,一个插件包可以包括多个插件启动类,每个插件启动类可以实现自己的业务接口对外提供服务;
@Plugin
@Plugin
description du paramètre d'annotation :id : l'identifiant unique du plug-in, s'il n'est pas renseigné, le nom de la classe d'initialisation sera utilisé. La valeur après le cryptage MD5 est utilisée comme identifiant :
name : nom du plug-in, la valeur par défaut est "" ; : alias du plug-in, la valeur par défaut est "" ;
author : auteur du plug-in, la valeur par défaut est "" ;
email : e-mail du contact, la valeur par défaut est "" ; la valeur par défaut est "1.0.0" ;
automatique : s'il faut démarrer automatiquement l'exécution après le chargement, la valeur par défaut est vraie ;
description : description du plug-in, la valeur par défaut est "" ;
Description de la méthode d'interface IPlugin : - init : initialisation du plug-in ;
getPluginContext : renvoie l'objet de contexte d'environnement du plug-in ;
isInited : indique si le plug-in a été initialisé ;
isStarted : renvoie si le plug-in a été démarré ; ;
startup : Démarrez le plug-in ;
shutdown : Arrêtez le plug-in ;
destroy : Détruisez l'objet du plug-in
Le framework du plug-in fournit une classe abstraite AbstractPlugin qui encapsule le plug-in ; Interface IPlugin. Il est recommandé d'hériter directement. Exemple de code :
@Plugin public class DemoPlugin extends AbstractPlugin { // 根据需要重写父类方法... }
// 定义一个业务接口 public interface IBusiness { void sayHi(); } @Plugin(id = "demo_plugin", name = "DemoPlugin", author = "有理想的鱼", email = "suninformaiton#163.com", version = "1.0") public class DemoPlugin extends AbstractPlugin implements IBusiness { @Override public void startup() throws Exception { super.startup(); // System.out.println("started."); } @Override public void shutdown() throws Exception { super.shutdown(); // System.out.println("shutdown."); } public void sayHi() { System.out.println("Hi, from Plugin."); } }
Utilisation du plug-inCi-dessus, nous avons créé un plug-in DemoPlugin et implémenté l'interface métier IBusiness. Voici comment utiliser le plug-in et appeler la méthode de l'interface métier :
public static void main(String[] args) throws Exception { YMP.get().init(); try { DemoPlugin _plugin = (DemoPlugin) Plugins.get().getPluginFactory().getPlugin("demo_plugin"); // 或者 // _plugin = Plugins.get().getPluginFactory().getPlugin(DemoPlugin.class); // _plugin.sayHi(); // IBusiness _business = Plugins.get().getPluginFactory().getPlugin(IBusiness.class); _business.sayHi(); } finally { YMP.get().destroy(); } }
Hi, from Plugin. Hi, from Plugin. shutdown.
: Le le même plug-in peut implémenter plusieurs interfaces métier.Si plusieurs plug-ins implémentent la même interface métier, selon l'ordre de chargement du plug-in, l'instance du plug-in chargée en dernier L'objet remplacera le premier ;