-
Notifications
You must be signed in to change notification settings - Fork 1
기술문서
- 적용여부
- 모듈을 캡슐화된 구조로 만들도록 해준다
- 가독성과 접근제한자의 Trade-off를 없애 선택의 폭을 넓혀줍니다. 지금까지는, 클래스의 접근제한자를 package-private으로 만들어 외부의 접근을 막고 싶다면, 관련된 클래스를 하나의 패키지에 몰아넣어야 했습니다. 하지만, 이 방법은 패키지가 비대해질수록 가독성은 떨어집니다.
Jigsaw : 애플리케이션을 멀티 모듈로 구성할때, 자신의 특정 패키지 혹은 특정 인터페이스 만을 외부 모듈에 노출할 수 있도록 하는 기능입니다.
심지어 특정한 모듈에게만 노출하는것도 가능합니다.
패키지 구조를 자유롭게 만들며, 접근제한자는 그대로 유지하기 위해서.. 기존에는 프렌드 접근자 패턴 (자바 API 디자인 책)(https://dlwnsdud205.tistory.com/332) 을 사용했는데, 이 방법 역시 하나의 패키지에 패턴 클래스가 많아져, 가독성을 완전히 지키지는 못합니다. 하지만, Jigsaw를 사용하면, 패키지 구조는 그대로 두고, 모든 클래스를 public으로 설정해도, 외부의 접근을 막을 수 있어, 가독성과 오용을 모두 지킬 수 있습니다.
책 만들면서 배우는 클린아키텍처
에서는 스프링의 Bean 설정 방식은 애플리케이션에 유연성을 부여하지만, 해당하는 클래스들을 모두 public으로 만들어야 하므로, 잘못된 사용이 발생할 수 있다고 경고합니다.
즉, 유연성과 가독성 사이에서 Trade-off를 해야하는거죠
하지만, Jigsaw를 사용하면, 클래스를 모두 public으로 만들더라도, 저희가 허락한 api가 아니면, 다른 모듈에서 사용하지 않게 막음으로써 오용을 막고, 각 방법의 장점만을 취할 수 있다고 생각합니다.
Junit의 사용사례
https://www.baeldung.com/java-9-modularity
https://www.baeldung.com/new-java-9
https://mslim8803.tistory.com/39