///////
Search
🌱

Bean이란 무엇인가요?

Spring Bean이란?

Spring IoC 컨테이너가 관리하는 자바 객체(POJO)로 컨테이너에 의해 생명주기가 관리되는 객체
필요할 때마다 IoC 컨테이너에서 가져와서 사용
어노테이션(@Bean) 혹은 xml 설정을 통해 일반 객체를 Bean으로 등록 가능
제어의 역전(IoC, Inversion Of Control)
일반적인 자바 프로그래밍에서는 객체들이 프로그램의 흐름을 결정하고, 각 객체를 직접 사용자가 생성하고 호출했다.
모든 작업을 사용자가 제어하는 구조였다고 생각하면 된다.
하지만 IoC를 적용하면, 객체의 생성 및 생명주기 관리IoC 컨테이너라는 외부의 관리자에게 맡긴다.
즉, 사용자의 제어권을 다른 주체로 넘기는 것을 제어의 역전이라고 한다.

Bean 등록 방식

Component Scan
@Component를 명시하여 Bean을 추가하는 방법
컴포넌트 스캔의 대상
@Component 외에 @Controller, @Service, @Repository, @Configuration
@Component 어노테이션은 클래스 혹은 인터페이스에만 붙일 수 있다.
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Indexed public @interface Component {
Java
복사
Java 코드로 등록
클래스 생성 후 @Configuration 어노테이션 활용
아래와 같이 클래스 단위@Configuration을, 인스턴스를 생성하는 메서드 위엔 @Bean을 명시
@Bean 어노테이션은 메서드 혹은 어노테이션에만 붙일 수 있다.
@Configuration public class AppConfig { @Bean public MemberRepository memberRepository() { return new MemoryMemberRepository(); } @Bean public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } }
Java
복사
@Bean vs @Component
@Bean은 개발자가 컨트롤 불가능한 외부 라이브러리를 등록하고 싶은 경우 주로 사용
@Component는 개발자가 직접 컨트롤 가능한 클래스들의 경우 사용