是五月呀!

IDEA插件开发(五)Service

IDEA平台提供service的概念。一个Service组件是单例的,使用ServiceManagergetService方法获取。
Service可以是一个类,也可以是一个接口,但如果是接口,必须有实现类。

有三种类型的service:

  • application级别
  • project级别
  • module级别

Action类似新建类时,可以选择模板来创建Service

注册:

1
2
3
4
5
6
7
<extensions defaultExtensionNs="com.intellij">
<!-- Declare the application level service -->
<applicationService serviceInterface="Mypackage.MyApplicationService" serviceImplementation="Mypackage.MyApplicationServiceImpl" />
<!-- Declare the project level service -->
<projectService serviceInterface="Mypackage.MyProjectService" serviceImplementation="Mypackage.MyProjectServiceImpl" />
</extensions>

如果不指定serviceInterface,那么跟serviceImplementation一样。
获取:

1
2
3
4
5
MyApplicationService applicationService = ServiceManager.getService(MyApplicationService.class);
MyProjectService projectService = ServiceManager.getService(project, MyProjectService.class);
MyModuleService moduleService = ModuleServiceManager.getService(module, MyModuleService.class);

参考资料:
Plugin Services