🎈 싱글톤(Singleton)
객체를 단 1개만 만드는 방식의 디자인 패턴
@Component
어노테이션 사용@Bean
어노테이션 사용
@Component
어노테이션을 사용하는 방식은 매우 간단하다.
스프링 빈으로 등록하려는 클래스 위에 @Component
어노테이션을 붙이면 된다.
위의 어노테이션들을 사용할 때도, @Component를 사용한 것처럼 해당 클래스가 스프링 빈으로 등록된다.
그 예시로 @Controller
어노테이션의 경우를 살펴보자.
위 처럼 @Controller
어노테이션을 사용하여 스프링 빈을 등록하였다.
어떻게 이런 방식으로 스프링 빈 등록이 가능한지 확인하기 위해, 해당 어노테이션이 정의된 위치로 이동해보자.
해당 코드를 확인하면 @Controller
안에 @Component
가 포함되는 것을 볼 수 있다.
이러한 원리로 @Controller
로도 스프링 빈 설정이 가능하다.
이는 @Service
, @Repository
등에서도 동일하다.
또 하나의 스프링 빈 등록 방식은, @Configuration
어노테이션을 붙인 클래스 안에서 @Bean
어노테이션이 붙은 메소드를 만드는것이다.
메소드에서, 스프링 빈으로 등록할 객체를 리턴해주면 된다.
이 때, 정의한 메소드의 이름은 Spring Bean의 이름이 된다.
@Component
: 편리하다. 간결하다. 깔끔하다.@Bean
: 스프링으로 등록할 객체를, 내 마음대로 수정할 수 있다. 예를 들어 위에서 생성한 MemberService 객체의 속성값을 변경한 후 스프링 빈으로 등록 가능하다. 이처럼 내 입맛에 맞게 객체를 바꿀 수 있다.