일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Uipath
- Thymeleaf
- 문자열
- 배열
- db
- string
- git
- rpa
- jquery
- React
- 상속
- spring
- MVC
- SpringBoot
- Scanner
- 조건문
- Eclipse
- 이클립스
- html
- Java
- jsp
- mysql
- JDBC
- Array
- Board
- Database
- API
- View
- Controller
- Oracle
- Today
- Total
유정잉
⭐️ @Componentscan과 @Configuration + @Bean의 차이점 본문
@Componentscan과 @Configuration + @Bean은 비슷한 목적을 가지고 있지만 약간 다른 방식으로 작동합니다.
[ @Componentscan ]
이 어노테이션은 Spring에게 특정 패키지 이하에서 컴포넌트를 찾아서 Bean으로 등록하라고 지시합니다. Spring은 해당 패키지와 그 하위 패키지를 스캔하여 @Component, @Repository, @Service, @Controller 등과 같은 어노테이션이 붙은 클래스를 찾아 빈으로 등록합니다.
구성 요소 스캔은 스프링이 클래스 경로에서 구성 요소를 찾아서 자동으로 빈으로 등록하는 메커니즘입니다. 구성 요소는 주로 @Component 어노테이션이 붙은 클래스들을 말합니다. 그러나 @ComponentScan은 @Component 외에도 @Repository, @Service, @Controller 등의 스프링에서 제공하는 다른 어노테이션으로 마킹된 클래스들도 스캔하여 빈으로 등록합니다.
일반적으로 @ComponentScan은 스프링 애플리케이션의 메인 설정 클래스에 적용됩니다. 이 설정 클래스는 일반적으로 @SpringBootApplication 어노테이션이 붙은 클래스일 수 있습니다. 이렇게 하면 스프링 부트 애플리케이션의 클래스 경로에서 구성 요소를 스캔하여 자동으로 빈으로 등록하게 됩니다.
[ @Configuration + @Bean ]
이 방식은 Java 기반의 설정을 사용하여 빈을 등록하는 방법입니다. @Configuration 어노테이션이 붙은 클래스 안에 @Bean 어노테이션이 붙은 메서드를 작성하면, 해당 메서드가 반환하는 객체를 Spring 컨테이너가 빈으로 등록합니다.
따라서, @Componentscan은 클래스 레벨에서 사용되며, 보통 스프링 설정 클래스에 사용됩니다. 스프링 설정 클래스는 주로 @Configuration 어노테이션이 붙은 클래스로 만들어지며, 이 클래스 안에서 @Componentscan 어노테이션을 사용하여 컴포넌트 스캔을 활성화합니다.
@Configuration
@ComponentScan(basePackages = "com.example.package")
public class AppConfig {
// 여기에 다른 설정과 @Bean 메서드들이 들어갈 수 있습니다.
}
이렇게 하면 "com.example.package" 패키지와 하위 패키지에서 @Component 어노테이션이 붙은 클래스들이 빈으로 등록됩니다.
보통 @Componentscan은 메인 애플리케이션 클래스에 사용됩니다.
주로 Spring Boot 애플리케이션에서는 @SpringBootApplication 어노테이션이 사용되는데, 이 어노테이션 안에 @Componentscan이 이미 포함되어 있습니다.
따라서 별도로 @Componentscan을 선언할 필요가 없습니다.
'개발자 공부 > 🎀 스프링 공부' 카테고리의 다른 글
⭐️ @PostConstruct와 @PreDestroy 빈의 초기화 + 빈의 소멸 (0) | 2024.05.29 |
---|---|
⭐️ Controller와 RestController의 차이점 (0) | 2024.05.29 |
⭐️ Model Attribute와 Request Parameter의 차이점 + RequestBody (0) | 2024.05.29 |
🎀 스프링 기본 5 - 의존관계 자동 주입 (0) | 2024.05.28 |
🎀 스프링 기본 4 - 컴포넌트 스캔 (1) | 2024.05.27 |