Pelaksanaan dan penggunaan pemalam


Buat kelas permulaan pemalam dengan mengisytiharkan anotasi @Plugin pada kelas yang melaksanakan antara muka IPlugin, yang akan dimuatkan dan diuruskan oleh kilang pemalam termasuk berbilang kelas permulaan pemalam, setiap kelas permulaan pemalam A boleh melaksanakan antara muka perniagaannya sendiri untuk menyediakan perkhidmatan luaran @Plugin注解来创建插件启动类,其将被插件工厂加载和管理,一个插件包可以包括多个插件启动类,每个插件启动类可以实现自己的业务接口对外提供服务;

  • @Plugin

      @Plugin perihalan parameter anotasi:

      id: ID unik pemalam, jika tidak diisi, nama kelas permulaan akan digunakan Nilai selepas penyulitan MD5 digunakan sebagai ID

      nama: nama pemalam, lalai ialah ""; : alias pemalam, lalainya ialah "";

      pengarang: pengarang pemalam, lalai ialah ""; e-mel: E-mel kenalan, lalai ialah ""

      versi: versi pemalam, the lalai ialah "1.0.0";

      automatik: sama ada untuk mula berjalan secara automatik selepas memuatkan, lalai adalah benar;

      init: pemalam pemalam;

      getPluginContext: mengembalikan objek konteks persekitaran pemalam

      isInited: mengembalikan sama ada pemalam telah dimulakan; ;
    • permulaan : Mulakan pemalam;

      tutup: Hentikan pemalam

      musnahkan: Musnahkan objek pemalam

      Rangka kerja pemalam menyediakan Abstrak; Antara muka IPlugin. Adalah disyorkan untuk mewarisi kod contoh:

      @Plugin
      public class DemoPlugin extends AbstractPlugin {
          // 根据需要重写父类方法...
      }

      Contoh pemalam yang digabungkan dengan antara muka perniagaan:

      // 定义一个业务接口
      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.");
          }
      }

    Sebuah pemalam yang telah kami buat
    pemalam DemoPlugin dan melaksanakan antara muka perniagaan IBusiness Berikut ialah cara menggunakan pemalam dan memanggil kaedah antara muka perniagaan:

    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();
        }
    }
    Hasil pelaksanaan:

    Hi, from Plugin.
    Hi, from Plugin.
    shutdown.

    pemalam yang sama boleh melaksanakan berbilang antara muka perniagaan Jika berbilang pemalam melaksanakan antara muka perniagaan yang sama, mengikut urutan pemuatan pemalam, contoh pemalam dimuatkan terakhir Objek akan menggantikan yang pertama