본문 바로가기
Spring

Spring Annotation 9. @Component

by Status Code 2023. 4. 19.

스프링 프레임워크에서는 클래스를 빈(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

댓글