본문 바로가기

좋아하는 것_매직IT/1.spring

Spring boot 에서 @bean 과 @component 어노테이션의 차이

반응형

 
Spring Boot에서 @Bean과 @Component 어노테이션의 차이


안녕하세요 부자되는 매직TV 입니다. 

Spring Boot에서 @Bean과 @Component 어노테이션은 모두 Spring Container에 Bean을 등록하는 데 사용되는 어노테이션입니다. 
하지만 두 어노테이션에는 몇 가지 차이점이 있습니다.

오늘 티스토리에서는 해당 내용을 다뤄보고자 합니다. 

그럼 시작해볼까요?

 @Component 어노테이션

@Component 어노테이션은 Spring Container에 Bean을 등록하는 데 가장 일반적으로 사용되는 어노테이션입니다. 
@Component 어노테이션은 클래스 레벨에 적용되며, 해당 클래스를 Bean으로 등록합니다.

예를 들어, 다음 코드는 MyMagicBean 클래스를 Bean으로 등록합니다.

@Component
public class MyMagicBean {

    public void hello() {
        System.out.println("Hello, Magic world!");
    }
}

Component 어노테이션은 Spring의 자동 Bean 등록 기능과 호환됩니다. 
즉, Spring Boot 애플리케이션을 실행하면 Spring Container는 @Component 어노테이션이 적용된 모든 클래스를 자동으로 Bean으로 등록합니다.

그럼, 이어서, @Bean 어노테이션에 대해서 알아보겠습니다.


@Bean 어노테이션

@Bean 어노테이션은 특정 Bean을 명시적으로 등록하는 데 사용됩니다.
@Bean 어노테이션은 메서드 레벨에 적용되며, 해당 메서드의 반환 값을 Bean으로 등록합니다.

예를 들어, 다음 코드는 MyBean 클래스를 Bean으로 등록합니다.

@Bean
public MyMagicBean myMagicBean() {
    return new MyMagicBean();
}

@Bean 어노테이션은 Spring의 자동 Bean 등록 기능과 호환되지 않습니다. 
즉, Spring Boot 애플리케이션을 실행하면 Spring Container는 @Bean 어노테이션이 적용된 메서드를 자동으로 호출하지 않습니다.

차이점 요약

특징 @ Component  @Bean
적용 위치 클래스 레벨 메소드 레벨
자동 Bean 등록 호환됨 호환안됨
사용 용도 일반적인 Bean 등록 특정 Bean 명시적 등록

 

Example Code

예제 코드를 작성해 보자면 아래와 같습니다. 

@SpringBootApplication
public class MagicApplication {

    public static void main(String[] args) {
        SpringApplication.run(MagicApplication.class, args);
    }

    @Bean
    public MyMagicBean myMagicBean() {
        return new MyMagicBean();
    }
}

@Component
public class MyMagicBean {

    public void hello() {
        System.out.println("Hello, Magic world!");
    }
}

 

위의 코드를 실행하면 아래와 같이 출력됩니다. 

Hello, Magic world!

 

@Bean 어노테이션이 적용된 myMagicBean() 메서드는 Spring Container에 MyMagicBean 클래스를 Bean으로 등록합니다. 
@Component 어노테이션이 적용된 MyBean 클래스는 Spring Container에 Bean으로 자동으로 등록됩니다. 
따라서 두 경우 모두 MyMagicBean 클래스의 hello() 메서드가 호출됩니다.

맺음말


@Bean과 @Component 어노테이션은 모두 Spring Container에 Bean을 등록하는 데 사용되는 어노테이션입니다. 
하지만 두 어노테이션에는 몇 가지 차이점이 있습니다.

@Component 어노테이션은 Spring의 자동 Bean 등록 기능과 호환됩니다.
@Bean 어노테이션은 Spring의 자동 Bean 등록 기능과 호환되지 않습니다.

따라서, 
일반적인 Bean을 등록할 때는 @Component 어노테이션을 사용하고, 
특정 Bean을 명시적으로 등록해야 할 때는 @Bean 어노테이션을 사용하면 됩니다.

오늘의 티스토리는 여기까지고요.
항상 믿고 봐주셔서 감사합니다. 

728x90
300x250