이러한 대입은 전역 상태에 영향을 미치며 애플리케이션을 제거하고 다른 애플리케이션을 설정할 수 없게 만듭니다. 따라서 같은 프로세스 내에서 반복되는 테스트가 실패할 수 있습니다. 유일한 예외는 더미/디폴트 인스턴스를 저장하기 위한 명시적 생성자 호출입니다.
서비스 저장을 피하기 위해 권장되는 방법은 서비스를 로컬로 받거나 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의 새로운 기능