ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 9장 - 애플리케이션 조립하기
    클린 코드(Clean Code)/만들면서 배우는 클린 아키텍처 요약 2023. 3. 3. 00:01
    728x90

    조립을 신경 써야 하는 이유

    코드 의존성을 모두 도메인 방향으로 향하기 위해서입니다.

     

    설정 컴포넌트

    모든 클래스에 대한 의존성을 가지는 설정 컴포넌트가 있어야 합니다.

    이 클래스는 단일 책임 원칙을 위반하지만 애플리케이션의 나머지 부분을 깔끔하게 유지하기 위해서는 필요합니다.

     

    스프링의 클래스패스 스캐닝으로 조립하기

    스프링을 통해 애플리케이션을 조립한 결과물을 application context라고 합니다.

    애플리케이션 컨텍스트는 애플리케이션을 구성하는 모든 객체(bean)를 포함합니다.

     

    스프링은 @Component가 붙은 클래스를 찾아 객체를 생성합니다.

    적절한 곳에 애너테이션을 활용하여 생성자만 잘 만들어주면 됩니다.

     

    @Component를 포함하고 있는 @PersistenceAdapter라는 사용자 애너테이션을 만들어서 적용해도 좋습니다.

    강경 클린 아키텍처파는 이런 방식도 프레임워크와 결합된다고 사용하지 말아야 한다고 주장할 수 있습니다.

     

    하지만 한 클래스에 애너테이션 하나 정도는 용인할 수 있고, 리팩터링도 그리 어렵지 않게 할 수 있습니다.

     

    하지만 다른 개발자들이 사용할 라이브러리나 프레임워크를 만드는 입장에서는 사용하면 안 되는 방법입니다.

    라이브러리 사용자가 스프링 프레임워크의 의존성에 엮이게 되기 때문입니다.

     

    스프링의 자바 컨피그로 조립하기

    @Configuration을 활용하여 이 클래스가 스프링의 클래스패스 스캐닝에서 발견해야 할 설정 클래스임을 명시합니다.

    여전히 클래스패스 스캐닝을 활용하지만 모든 빈을 가져오는 대신 설정 클래스만 선택하기 때문에 해로운 마법이 일어날 확률이 줄어듭니다.

     

    이렇게 되면 @Component 애너테이션을 붙이도록 강제하지 않기 때문에 애플리케이션 계층을 스프링 프레임워크 의존성 없이 깔끔하게 유지할 수 있습니다.

     

     

    댓글

Designed by Tistory.