본문 바로가기
코딩 공부/web & Java

[Spring] @Component와 @Bean의 차이

by 현장 2023. 10. 2.

Spring을 사용하다 보면 @Component와 @Bean을 사용헤보게 되고 둘 다 빈을 생성하는데 차이점에 대해서 궁금하게 되었습니다.

 

@Bean

@Configuration
public class TestConfiguration {
    @Bean
    public String name() {
        return "MyName";
    }

    @Bean
    public int age() {
        return 25;
    }

@Bean은 외부 라이브러리 또는 이미 정의되어 있는 객체들이 서로 종속성을 가지고 있을 경우의 빈 등록에 사용하는 어노테이션입니다. 또한 반환 값이 바로 Bean으로 등록되며 이미 정의된 기본 객체를 재정의하거나 내가 만든 객체의 종속성을 위해 빈을 등록할 때 사용합니다.

 

즉, 메소드 단위에서 개발자가 외부 라이브러리 및 개발자가 정의하지 않은 객체를 유연하게 넘기기 위해 사용하는 어노테이션입니다.

 

@Component

@Component
public class GameRunner {
    private GamingConsole game;

    public GameRunner(GamingConsole game) {
        this.game = game;
    }

    public void run() {
        System.out.println("Running game");
        // 내용
    }
}

개발자가 직접 정의한 객체 클래스 자체를 빈 등록할 때 사용하는 어노테이션이며 사용하기가 쉽습니다. 직접 정희한 객체 클래스에 사용하다 보니 Bean보다 많이 보게 되는 것 같습니다.

 

정리

결과 적으로 @Bean은 외부 라이브러리(ex. Spring 시큐리티 etc..)를 인스턴스화 하거나 빈 생성 전에 수행해야할 비지니스 로직이 많은 경우 권장이 되고 @Component는 위 경우를 제외한 대부분에 권장이 됩니다.

 

※ @Bean과 @Component를 반대로 사용할 경우 에러가 발생하여 실행이 되지 않습니다.

'코딩 공부 > web & Java' 카테고리의 다른 글

[Spring] Bean 스코프  (0) 2023.10.05
[Spring] 지연 초기화  (0) 2023.10.04
[Spring] Spring Bean  (0) 2023.10.01
HTTP multipart/form-data  (0) 2023.06.29
[Web] HTTP 통신과 Socket 통신  (0) 2023.06.21