반응형

# 스프링 핵심 원리 기본편

# 자동, 수동의 올바른 실무 운영 기준

## 편리한 자동 기능을 기본으로 사용

  • 스프링이 나오고 점차 자동을 선호하는 추세.
  • @Component 뿐만 아니라 @Controller , @Service , @Repository 처럼 계층에 맞추어 일반적인 애플 리케이션 로직을 자동으로 스캔할 수 있도록 지원한다. 거기에 더해 최근 스프링 부트는 컴포넌트 스캔을 기본으로 사용, 스프링 부트의 다양한 스프링 빈들도 조건이 맞으면 자동으로 등록하도록 설계했다.
  • 설정 정보를 기반으로 애플리케이션을 구성하는 부분과 실제 동작하는 부분을 명확히 나누는 것이 이상적이지만, 스프링 빈을 하나 등록할 때 @Component만 넣어주면 끝나는 걸 @Configuration 설정 정보에 가서 @Bean을 적고, 객체를 생성하고 주입할 대상을 일일이 적어주는 과정은 상당히 번거롭다.
  • 또한 관리할 빈이 많아 설정 정보가 커리면 설정 정보를 관리하는 것 자체가 부담이 된다.
  • 자동 빈 등록을 사용해도 OCP, DIP를 지킬 수 있다.

## 수동 빈 등록 사용

  • 업무 로직 빈 : 웹을 지원하는 컨트롤러, 핵심 비즈니스 로직이 있는 서비스, 데이터 계층의 로직을 처리하는 리포지토리 등. 보통 비즈니스 요구사항을 개발할 때 추가되거나 변경된다.
  • 기술 지원 빈: 기술적인 문제나 공통 관심사(AOP)를 처리할 때 주로 사용, 데이터베이스 연결이나, 공통 로그 처리 처럼 업무 로직을 지원하기 위한 하부 기술이나 공통 기술들이다.
  • 업무 로직은 숫자도 매우 많고, 한번 개발해야 하면 컨트롤러, 서비스, 리포지토리 처럼 어느정도 유사한 패 턴이 있다. 이런 경우 자동 기능을 적극 사용하는 것이 좋다. 보통 문제가 발생해도 어떤 곳에서 문제가 발생 했는지 명확하게 파악하기 쉽다.
  • 기술 지원 로직은 업무 로직과 비교해서 그 수가 매우 적고, 보통 애플리케이션 전반에 걸쳐서 광범위하게 영 향을 미친다. 그리고 업무 로직은 문제가 발생했을 때 어디가 문제인지 명확하게 잘 들어나지만, 기술 지원 로직은 적용이 잘 되고 있는지 아닌지 조차 파악하기 어려운 경우가 많다. 그래서 이런 기술 지원 로직들은 가급적 수동 빈 등록을 사용해서 명확하게 들어내는 것이 좋다.

## 정리

  • 편리한 자동 기능을 기본으로 사용.
  • 직접 등록하는 기술 지원 객체는 수동 등록.
  • 다형성을 적극 활용하는 비즈니스 로직은 수동 등록을 고민.

 

출처 : 인프런 스프링 핵심 원리 기본편

반응형

+ Recent posts