스프링 프레임워크에서는 클래스를 빈(Bean)으로 등록하여 의존성 주입(Dependency Injection)과 관리를 쉽게 할 수 있도록 어노테이션을 사용합니다.
@Component란?
@Component는 스프링의 주요 어노테이션 중 하나로, 클래스를 스프링 빈으로 등록하려 할 때 사용합니다. 이 어노테이션을 사용하면 스프링이 해당 클래스의 인스턴스를 생성하고, 관리 및 의존성 주입을 수행할 수 있습니다. 스프링 컨테이너는 @Component가 붙은 클래스를 찾아서 빈으로 등록하며, 이 과정은 컴포넌트 스캔(Component Scan)이라고 합니다.
@Component 예제
package com.example.demo;
import org.springframework.stereotype.Component;
@Component
public class MyComponent {
public String sayHello() {
return "Hello, World!";
}
}
위 예제에서 MyComponent 클래스에 @Component 어노테이션이 붙어 있어서 스프링 컨테이너에 의해 관리됩니다. 다른 클래스에서 MyComponent의 sayHello() 메서드를 사용하려면, @Autowired 어노테이션을 사용하여 의존성 주입을 수행할 수 있습니다.
package com.example.demo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class MyService {
private final MyComponent myComponent;
@Autowired
public MyService(MyComponent myComponent) {
this.myComponent = myComponent;
}
public String useMyComponent() {
return myComponent.sayHello();
}
}
위 예제에서 MyService 클래스는 MyComponent를 사용하며, 생성자를 통해 MyComponent 인스턴스를 주입받습니다. @Autowired 어노테이션은 스프링이 MyComponent 인스턴스를 찾아서 MyService의 생성자에 전달하도록 합니다.
@Component는 일반적인 클래스에 사용되며, 보다 특화된 역할을 하는 다른 어노테이션도 있습니다. 예를 들어, @Service, @Repository, @Controller 등이 있습니다. 이들 어노테이션은 @Component를 상속받아서 작성되어 있으며, 특정 계층이나 역할을 나타내기 위해 사용됩니다.
'Spring' 카테고리의 다른 글
Spring Annotation 11. @Repository (0) | 2023.04.19 |
---|---|
Spring Annotation 10. @Service (0) | 2023.04.19 |
Spring Annotation 8. @ComponentScan (0) | 2023.04.19 |
Spring Annotation 7. @Transactional (0) | 2023.04.19 |
Spring Annotation 6. @Autowired (0) | 2023.04.19 |
댓글