모음/[스프링 퀵스타트]
[스프링 퀵스타트] 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 설정을 적절히 활용하여 프로젝트의 복잡도에 맞는 유연한 구성을 하는 것이 중요합니다.
반응형