모음/[스프링 퀵스타트]

[스프링 퀵스타트] Day1 - chapter5. 어노테이션 기반 설정 (v2024)

ttoance 2024. 10. 5. 23:29

1. 컴포넌트 스캔과 애노테이션 설정

스프링은 @Component와 이를 확장한 여러 애노테이션을 통해 빈을 스캔하고 등록합니다. 이를 위해 <component-scan>을 설정하거나 @ComponentScan 애노테이션을 활용합니다.

  • @Component
    • 스프링 컨테이너가 자동으로 관리해야 하는 클래스를 정의할 때 사용합니다.
  • @Service
    • 서비스 레이어를 나타내는 애노테이션으로, 비즈니스 로직이 구현된 클래스에 사용됩니다.
  • @Repository
    • 데이터 엑세스 레이어를 나타내며, DAO 클래스에 사용합니다.
  • @Controller
    • 프레젠테이션 레이어를 나타내며, 웹 요청을 처리하는 클래스에 사용합니다.

이러한 애노테이션을 통해 클래스의 역할을 명확히 하여 컨테이너가 자동으로 빈을 관리하도록 합니다.


2. 의존성 주입 (Dependency Injection) 애노테이션

애노테이션을 통해 간단하고 직관적으로 의존성 주입을 할 수 있습니다. 다음은 스프링에서 사용되는 주입 애노테이션입니다.

  • @Autowired
    • 타입에 따라 의존성을 자동으로 주입합니다.
    • 생성자, 필드, 메서드에 적용할 수 있으며, 해당 의존성을 찾지 못할 경우 예외를 발생시킵니다.
  • @Qualifier
    • 동일한 타입의 빈이 여러 개일 때, 특정 빈을 지정할 수 있도록 도와줍니다.
  • @Resource
    • 이름을 기준으로 의존성을 주입하며, JSR-250 표준 애노테이션입니다.
  • @Inject
    • 자바의 CDI(Common Dependency Injection)에서 제공하는 애노테이션으로, 타입에 따른 의존성 주입을 처리합니다.

이러한 애노테이션을 활용하면 코드에서 직접 의존성을 관리하지 않고, 스프링 컨테이너가 자동으로 관리하도록 할 수 있습니다.


3. 애노테이션 설정과 XML 설정 비교

  • 애노테이션 설정
    • 코드를 간결하게 유지하고, 클래스 간의 결합도를 낮춥니다.
    • 컴파일 시에 애노테이션이 적용되므로, 설정의 오류를 빨리 확인할 수 있습니다.
    • 개발 생산성을 높이며, 설정이 코드와 동일한 곳에 있으므로 유지보수가 쉽습니다.
  • XML 설정
    • 설정과 소스를 분리하여 관리할 수 있습니다.
    • 애플리케이션의 동작을 변경할 때 코드를 수정하지 않고 설정만 변경할 수 있습니다.
    • 복잡한 설정이나 프로파일을 지원할 때 유용합니다.

결론

✔️ 스프링의 애노테이션 기반 설정을 활용하면 더욱 직관적이고 간결한 코드를 작성할 수 있습니다.
✔️ 역할에 따른 애노테이션(@Service, @Repository, @Controller)을 사용하여 클래스의 책임을 명확히 표현할 수 있습니다.
✔️ 다양한 의존성 주입 애노테이션을 통해 유연하고 간단한 의존성 관리를 할 수 있습니다.

애노테이션 기반 설정과 XML 설정을 적절히 활용하여 프로젝트의 복잡도에 맞는 유연한 구성을 하는 것이 중요합니다.

반응형