IntelliJ Platfrom Plugin

IntelliJ Platform Plugin SDK 공식문서 읽기 - Services

PI.314 2022. 10. 20. 00:36

Services

서비스는 플러그인이 해당 ComponentManager 인스턴스의 getService() 메소드를 호출할 때 필요에 따라 로드되는 플러그인 구성 요소입니다.

 

IntelliJ 플랫폼은 여러 번 호출 되더라도 서비스의 인스턴스 하나만 로드 되도록 합니다. 서비스에는 서비스 인스턴스화에 사용되는 구현 클래스가 있어야 합니다. 서비스에는 서비스 인스턴스를 얻고 서비스의 API를 제공하는 데 사용되는 인터페이스 클래스가 있을 수도 있습니다. 종료 hook/cleanup routine이 필요한 서비스는 Disposable을 구현하고 dispose()에서 필요한 작업을 수행 할 수 있습니다

(Automatically Disposed Objects 참조)

 

Disposer and Disposable | IntelliJ Platform Plugin SDK

 

plugins.jetbrains.com

 

서비스는 일련의 관련 클래스에서 작동하는 로직을 캡슐화하거나 플러그인 프로젝트에서 사용할 수 있는 재사용 가능한 기능을 제공하는 데 사용되며 개념적으로 다른 언어 또는 프레임 워크의 서비스 클래스와 다르지 않습니다.

 

Types

IntelliJ Platform은 애플리케이션 레벨 서비스(global singleton), project-level services, module level services 등 3가지 유형의 서비스를 제공합니다. 후자의 두 가지 경우 해당 범위의 각 인스턴스에 대해 별도의 서비스 인스턴스가 생성됩니다. (Project Model Introduction 참조)
 
- 모듈 수준 서비스는 모듈이 많은 프로젝트의 메모리 사용량을 증가시킬 수 있으므로 사용하지 않는 것을 고려하십시오.
 

Constructor

Project/Module 수준 서비스 생성자는 Project/Module argument를 가질 수 있습니다. 시작 성능을 향상시키려면 생성자에서 과도한 초기화를 방지하십시오.
 
생성자 주입을 사용하는 것은 성능상의 이유로 더 이상 사용되지 않습니다(Light Service에서는 지원되지 않습니다). 다른 dependencies은 모든 해당 방법에서 필요할 때만 획득해야합니다 (someServiceMethod() in Project Service Sample 참조)