@Bean, @Configuration, @Component 어노테이션

HyeonWoo·2020년 12월 16일
1

스프링 & JPA

목록 보기
13/34
post-thumbnail

기존의 Spring MVC에서는 xml을 활용하여 Bean을 등록하였는데, 프로젝트 규모가 커짐에 따라 xml으로 빈을 관리하는 것이 상당히 번거로워져서 어노테이션을 활용하여 Bean을 등록하게 된다. 이번 장에서는 빈을 등록하는 어노테이션 @Bean, @Configuration, @Component의 차이점을 알아 보고자 한다.


@Bean, @Configuration

이 두 어노테이션은 세트로 함께 사용해 줘야한다.

@Bean 어노테이션만 주어도 스프링 컨테이너에 빈으로 등록은 가능하다. 하지만 싱글톤을 보장 받지 못한다.

다음 예시를 보자.


@Configuration
public class SecurityJavaconfing extends WebSecurityConfigurerAdapter {

    @Bean
    public PasswordEncoder passwordEncoder(){
        return new BCryptPasswordEncoder();
    }
    
    @Bean
    public JwtUtil jwtUtil() {
        return new JwtUtil(secret);
    }

위와 같이 @Bean을 사용하는 클래스에는 반드시 @Configuration 어노테이션을 활용하여 해당 클래스에서 Bean을 등록하고자 함을 명시해줘야 한다.


@Component

아래 코드는 @Component 어노테이션을 이용해서 빈을 등록하는 방식이다.

@Component
public class LoginUserAuditorAware implements AuditorAware<String> {
   
   ``
}

@Bean, @Configuration / @Component 차이점

  • @Bean, @Configuration 의 경우
  1. 개발자가 직접 제어가 불가능한 라이브러리를 활용할 때.
  2. 초기에 설정을 하기 위해 활용할 때
  • @Component의 경우
  1. 개발자가 직업 개발한 클래스를 Bean으로 등록하고자 하는 경우

참고자료
https://mangkyu.tistory.com/75

profile
학습 정리, 자기 개발을 위한 블로그

0개의 댓글