본문 바로가기
Backend/Spring

Spring : @Component 어노테이션에 대해서

by 코딩쥐 2024. 10. 24.

@Component 어노테이션은 클래스에 적용해서 해당 클래스를 스프링의 Beanpool에 등록하는데 사용된다. 해당 어노테이션이 붙은 클래스의 경우 스프링 컨테이너가 자동으로 스캔하여 인스턴스화한다. 이전에 @Configuration과 @Bean을 사용하여 Bean을 등록하는 것보다 간편하게 등록할 수 있다는 장점이 있다. 

 

1. 빈으로 생성 할 클래스를 생성한다.

 Eat 클래스는 food라는 멤버변수를 설정하고, 이를 설정하는 getter와 setter 메서드를 설정한다. 

package com.example.project2.beans;

public class Eat {
    //멤버변수 선언
    private String food;

    //getter 메서드 선언
    public String getFood() {
        return food + "를 먹습니다.";
    }

    //setter 메서드 선언
    public void setFood(String food) {
        this.food = food;
    }
}

 

2. @Component 어노테이션을 추가한다. 

생성한 클래스에 @Component 어노테이션을 추가한다. 스프링 컨테이너가 해당 클래스를 스캔하여 자동으로 빈으로 등록하여, 인스턴스를 생성하고 관리한다. 

package com.example.project2.beans;

// Component를 import한다.
import org.springframework.stereotype.Component;

@Component
public class Eat {
    //멤버변수 선언
    private String food;

    //getter 메서드 선언
    public String getFood() {
        return food + "를 먹습니다.";
    }

    //setter 메서드 선언
    public void setFood(String food) {
        this.food = food;
    }
}

 

3. 애플리케이션에서 빈 사용

@SpringBootApplication 어노테이션을 통해서 스프링 부트 어플리케이션을 초기화하고 컴포넌트 스캔을 활성화한다. 이후 getBean을 사용하여 Eat 클래스의 인스턴스를 가져온다. setFood를 통해서 food 변수를 설정하고 getFood 메서드를 호출하여 값을 출력한다.  

package com.example.project2;

import com.example.project2.beans.Eat;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;

@SpringBootApplication
public class Project2Application {

	public static void main(String[] args) {
		//스프링 컨테이너에 직접 접근할 수 있도록 app이라는 변수를 할당한다.
		ApplicationContext app = SpringApplication.run(Project2Application.class, args);
		//Eat.class 빈을 가져온다.
		Eat apple = app.getBean(Eat.class);
		//Eat.class의 setter메서드를 통해서 설정한다.
		apple.setFood("사과");
		System.out.println(apple.getFood());
	}
}