애플리케이션 서비스가 static final 필드/프로퍼티에 대입되는 것을 보고합니다.

이러한 대입은 전역 상태에 영향을 미치며 애플리케이션을 제거하고 다른 애플리케이션을 설정할 수 없게 만듭니다. 따라서 같은 프로세스 내에서 반복되는 테스트가 실패할 수 있습니다. 유일한 예외는 더미/디폴트 인스턴스를 저장하기 위한 명시적 생성자 호출입니다.

서비스 저장을 피하기 위해 권장되는 방법은 서비스를 로컬로 받거나 java.util.function.Supplier로 래핑하는 것입니다.

예:


  // 잘못된 방법
  private static final ManagingFS ourInstance = ApplicationManager.getApplication().getService(ManagingFS.class);

  // 올바른 방법
  private static final Supplier<ManagingFS> ourInstance = CachedSingletonsRegistry.lazy(() -> {
    return ApplicationManager.getApplication().getService(ManagingFS.class);
  });

  // 예외
  private static final UniqueVFilePathBuilder DUMMY_BUILDER = new UniqueVFilePathBuilder()

2023.2의 새로운 기능