플러그인 구현 및 사용
IPlugin 인터페이스를 구현하는 클래스에 @Plugin
주석을 선언하여 플러그인 시작 클래스를 생성합니다. 이 클래스는 플러그인 팩토리에 의해 로드되고 관리됩니다. 플러그인 패키지는 여러 개를 포함할 수 있습니다. 각 플러그인 시작 클래스는 자체 비즈니스 인터페이스를 구현하여 외부 서비스를 제공할 수 있습니다. @Plugin
注解来创建插件启动类,其将被插件工厂加载和管理,一个插件包可以包括多个插件启动类,每个插件启动类可以实现自己的业务接口对外提供服务;
@Plugin
@Plugin
주석 매개변수 설명: #🎜 🎜#id: 플러그인의 고유 ID를 입력하지 않으면 초기화 클래스 이름의 MD5 암호화 값이 ID로 사용됩니다. #name: 플러그인 이름, 기본값은 " ";
alias: 플러그인 별칭, 기본값은 "";
author: 플러그 -작성자, 기본값은 "";
email: 연락처 이메일, 기본값은 "";
version: 플러그인 버전, 기본값은 "1.0.0 ";
automatic: 로드 후 자동으로 실행을 시작할지 여부, 기본값은 true입니다.#🎜🎜 #
description: 플러그인 설명, 기본값은 "";# 🎜🎜#
IPlugin 인터페이스 메서드 설명: #🎜 🎜#init: 플러그인 초기화
getPluginContext: 반환 플러그인 환경 컨텍스트 객체 isInited: 플러그인이 초기화되었는지 여부를 반환합니다. isStarted: 플러그인이 시작되었는지 여부를 반환합니다. 🎜#
startup: 플러그인을 시작합니다.
shutdown: 플러그인을 중지합니다.
destroy: 플러그인 개체를 삭제합니다. ## 🎜🎜#
플러그인 프레임워크는 IPlugin 인터페이스를 캡슐화하는 AbstractPlugin 추상 클래스를 제공합니다. 샘플 코드:#🎜 🎜#
@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."); } }
#🎜🎜 ##🎜🎜 #플러그인 사용
위에서는 DemoPlugin 플러그인을 만들고 IBusiness 비즈니스 인터페이스를 구현했습니다. 에서 비즈니스 인터페이스 메서드를 호출합니다:
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.# 🎜🎜#
Note
: 여러 플러그인이 동일한 비즈니스 인터페이스를 구현하는 경우 플러그인 로딩에 따라 여러 개의 비즈니스 인터페이스를 구현할 수 있습니다. 순서에 따라 마지막으로 로드된 플러그인 인스턴스 객체가 이전 객체를 대체합니다.