package-private
제한자를 통해 패키지 내의 클래스들을 하나의 응집된 모듈로 만들 수 있다.
public
으로 만들면 된다.package-private
제한자, +는 public
제한자 buckpal
|---- account
|---- adapter
|---- in
|---- web
|---- o AccountController
|---- out
|---- persistence
|---- o AccountPersistenceAdapter
|---- o SpringDataAccountRepository
|---- domain
|---- + Account
|---- + Activity
|---- application
|---- o SendMoneyService
|---- port
|---- in
|---- + SendMoneyUseCase
|---- out
|---- + LoadAccountPort
|---- + UpdateAccountStatePort
package-private
으로 만들 수 있다.SendMoneyService
도 인커밍 포트 인터페이스를 통해 호출되기에 바깥에서 접근할 필요가 없다.public
제한자를 이용해야 한다.public
으로 선언해야 한다.
public
제한자를 사용하면 컴파일 시점에서 의존성 규칙 위반 여부를 확인할 수 없다.ArchUnit 라이브러리를 통해 의존성 방향을 체크하는 테스트를 JUnit 환경에서 작성할 수 있다.
class DependencyRuleTest {
private static final String ROOT = "com.practice.cleanarichitecturehandson.buckpal.account.";
@Test
void domainLayerDoesNotDependOnApplicationLayer() {
noClasses()
.that()
.resideInAnyPackage(ROOT + "domain..")
.should()
.dependOnClassesThat()
.resideInAnyPackage(ROOT + "application..")
.check(new ClassFileImporter()
.importPackages(ROOT + "..")
);
}
}