Spring/Spring 공부

@Component의 역할과 사용법

개발자잡 2024. 10. 23. 04:50

@Component는 스프링 프레임워크에서 사용되는 기본적인 어노테이션 중 하나로, 스프링이 관리하는 빈(Bean)으로 등록하고자 할 때 사용한다.

 

주로 개발자가 작성한 클래스가 스프링 컨테이너에 의해 관리되고, 의존성 주입(Dependency Injection)을 통해 쉽게 사용할 수 있도록 해준다.

@Component
public class MyService {
    public void doSomething() {
        System.out.println("Doing something...");
    }
}

 

**빈(Bean)**은 스프링 IoC(Inversion of Control) 컨테이너에 의해 관리되는 객체를 의미, 스프링 애플리케이션에서 의존성 주입을 통해 사용되는 객체

 

스프링이 빈을 관리: @Component가 붙은 클래스를 스프링 컨테이너에서 필요할 때마다 가져와 사용할 수 있다. 이를 통해 수동으로 객체를 생성하거나 관리할 필요 없이 스프링이 객체 생명 주기를 관리할 수 있다.

 

@Component
public class MyService {
    public void performTask() {
        System.out.println("Task performed");
    }
}

@Component
public class AnotherService {
    private final MyService myService;

    // 의존성 주입
    public AnotherService(MyService myService) {
        this.myService = myService;
    }

    public void execute() {
        myService.performTask();
    }
}

 

다른 관련 어노테이션들:

@Component 외에도 특정한 역할에 따라 더 구체적인 어노테이션이 있다. 모두 @Component의 특수한 형태

  • @Service: 비즈니스 로직을 처리하는 서비스 클래스에 사용
  • @Repository: 데이터 액세스 객체(DAO) 클래스에 사용. 예외 처리를 자동으로 변환하는 등의 역할을 추가로 수행
  • @Controller: MVC 패턴에서 컨트롤러 역할을 하는 클래스에 사용

이 어노테이션들은 구체적인 용도를 강조하기 위한 것이며, 본질적으로 모두 @Component와 동일한 기능을 수행한다.