일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- spring aop
- unix
- @JUnit
- 리눅스
- java
- Ubunt
- Framework
- 프로퍼티
- java spring
- Spring JDBC
- XML
- POJO
- myBatis
- STS
- Linux
- 컨테이너
- Spring Boot
- Di
- 마이바티스
- @AspectJ
- SpringJDBC
- spring framework
- pointcut
- @Spring-Test
- AOP
- Dependency Injection
- JDBC TEMPLATE
- JdbcTemplate
- @test
- spring
Archives
- Today
- Total
개키우는개발자 : )
@Component 스캔 본문
반응형
결론 및 요약
컴포넌트 스캔과 애노테이션을 이용해 스프링 빈(Bean)을 등록하는 방법과 이를 더 효율적으로 사용하는 메타 애노테이션(Meta-Annotation)에 대해 배웠습니다. 스프링 부트에서 자주 사용되는 컴포넌트 스캔 방식을 통해 빈 등록을 간소화하고, 메타 애노테이션을 활용한 사용자 정의 애노테이션을 만들어 사용하는 방법을 익혔습니다.
주요 내용 요약
컴포넌트 스캔을 통한 빈 등록:
@Component
애노테이션을 클래스에 붙이면, 스프링 컨테이너의 컴포넌트 스캐너가 해당 클래스를 빈으로 자동 등록합니다.- 스프링 애플리케이션의 구성을 간소화하며, 별도의 설정 파일이나 명시적인 등록 코드 없이도 자동으로 빈이 등록됩니다.
- 스프링 부트에서는
@ComponentScan
을 이용하여 패키지 내의 모든 컴포넌트를 탐색하고 등록합니다.
메타 애노테이션(Meta-Annotation):
- 애노테이션 위에 또 다른 애노테이션을 붙여 재사용할 수 있습니다.
- 직접 만든 애노테이션(
@MyComponent
)에도@Component
를 메타 애노테이션으로 사용하면, 이 애노테이션이 붙은 클래스 역시 빈으로 등록됩니다. - 스프링에서 제공하는 애노테이션(
@Controller
,@Service
등)은 모두@Component
메타 애노테이션을 포함하고 있습니다. 이를 통해 해당 클래스가 빈으로 등록됩니다.
REST 컨트롤러의 특성:
@RestController
는@Controller
와@ResponseBody
의 결합체로, 자동으로 반환된 값을 HTTP 응답의 바디에 넣어 전송하는 방식입니다.- 이를 통해 개발자는
@ResponseBody
를 메소드마다 따로 지정할 필요 없이 자동으로 JSON 형식으로 반환할 수 있습니다.
컴포넌트 스캔 방식의 장점과 단점:
- 장점: 새로운 클래스를 빈으로 등록하기 위해 따로 구성 정보를 추가할 필요 없이, 컴포넌트 애노테이션만 붙이면 간편하게 빈으로 등록할 수 있습니다.
- 단점: 많은 클래스가 빈으로 등록될 경우, 어떤 클래스가 빈으로 등록되었는지 추적하기 어려워질 수 있습니다. 따라서 프로젝트 규모가 커질수록 구조적인 관리가 필요합니다.
사용자 정의 애노테이션을 사용하는 이유:
- 구체적인 역할 구분: 계층형 아키텍처에서 클래스의 역할을 명확히 하기 위해, 예를 들어 웹 계층의 컨트롤러인지 서비스 계층의 비즈니스 로직인지 구분하기 위해 사용할 수 있습니다.
- 스프링에서 제공하는
@Controller
,@Service
는 이러한 구체적인 역할 구분을 돕는 스테레오타입 애노테이션의 예입니다.
결론:
컴포넌트 스캔 방식은 간결하고 직관적으로 빈을 등록할 수 있는 강력한 방법입니다. 또한 메타 애노테이션을 활용해 재사용 가능하고 역할을 구체화할 수 있는 애노테이션을 만드는 것은 코드 가독성을 높이는 데 유리합니다. REST 컨트롤러와 같은 스테레오타입 애노테이션은 웹 애플리케이션의 설계를 더욱 효율적으로 만듭니다.
반응형
'토비의 스프링 부트 - 이해와 원리 > 섹션5 - 독립 실행형 스프링 애플리케이션' 카테고리의 다른 글
SpringBootApplication (0) | 2024.10.06 |
---|---|
Bean의 생명주기 메소드 (0) | 2024.10.06 |
자바코드 구성 정보 사용 (0) | 2024.10.06 |
스프링 컨테이너로 통합 (0) | 2024.10.06 |
애노테이션 매핑 정보 사용 (0) | 2024.10.06 |
Comments