Configuration — 모듈 해석의 결과인 설정

Configuration — 모듈 해석의 결과인 설정

Configuration해석(resolution) 또는 서비스 바인딩을 포함한 해석의 결과인 설정이에요. 해석의 출력인 가독성 그래프(readability graph)를 캡슐화해요.

출처: Java API Reference

본문

가독성 그래프는 방향 그래프로, 정점(vertex)이 ResolvedModule 타입이고 간선이 모듈 간의 가독성(readability)을 나타내요. Configurationmodules() 메서드로 그래프의 해석된 모듈 집합을 얻고, ResolvedModulereads() 메서드로 한 해석된 모듈이 읽는 모듈 집합을 얻어요. 읽히는 모듈들은 같은 설정에 있을 수도, 부모 설정(parent configurations)에 있을 수도 있어요.

Configuration은 루트 모듈 집합을 해석하는 resolve 메서드와, 서비스 바인딩을 포함한 해석을 하는 resolveAndBind 메서드를 정의해요. 두 메서드 모두 인스턴스 버전과 static 버전이 있어요. 인스턴스 메서드는 수신자를 부모 설정으로 하는 설정을 만들고, static 메서드는 부모 설정이 둘 이상일 수 있는 더 고급 사례를 위한 거예요.

JVM의 각 모듈 레이어는 설정으로부터 만들어져요. 부트 레이어(boot layer) 의 설정은 ModuleLayer.boot().configuration()으로 얻어요. 부트 레이어의 설정은 새 설정을 만들 때 부모로 자주 쓰여요.

해석 예시

다음 예시는 부트 레이어의 설정을 부모 설정으로 하여 myapp이라는 이름의 모듈을 resolve 메서드로 해석하고, 각 해석된 모듈의 이름과 그 모듈이 읽는 모듈 이름을 출력해요.

Path dir1 = ..., dir2 = ..., dir3 = ...;
ModuleFinder finder = ModuleFinder.of(dir1, dir2, dir3);
Configuration parent = ModuleLayer.boot().configuration();
Configuration cf = parent.resolve(finder, ModuleFinder.of(), Set.of("myapp"));

자바 9부터 제공되는 final 클래스예요.

더 알아보기 (Learn more)