Spring Bean이란?
•
Spring IoC 컨테이너가 관리하는 자바 객체(POJO)로 컨테이너에 의해 생명주기가 관리되는 객체
•
필요할 때마다 IoC 컨테이너에서 가져와서 사용
•
어노테이션(@Bean) 혹은 xml 설정을 통해 일반 객체를 Bean으로 등록 가능
일반적인 자바 프로그래밍에서는 객체들이 프로그램의 흐름을 결정하고, 각 객체를 직접 사용자가 생성하고 호출했다.
모든 작업을 사용자가 제어하는 구조였다고 생각하면 된다.
하지만 IoC를 적용하면, 객체의 생성 및 생명주기 관리를 IoC 컨테이너라는 외부의 관리자에게 맡긴다.
즉, 사용자의 제어권을 다른 주체로 넘기는 것을 제어의 역전이라고 한다.
Bean 등록 방식
Component Scan
•
@Component를 명시하여 Bean을 추가하는 방법
◦
@Component 외에 @Controller, @Service, @Repository, @Configuration
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Indexed
public @interface Component {
Java
복사
Java 코드로 등록
•
클래스 생성 후 @Configuration 어노테이션 활용
•
아래와 같이 클래스 단위엔 @Configuration을, 인스턴스를 생성하는 메서드 위엔 @Bean을 명시
@Configuration
public class AppConfig {
@Bean
public MemberRepository memberRepository() {
return new MemoryMemberRepository();
}
@Bean
public MemberService memberService() {
return new MemberServiceImpl(memberRepository());
}
}
Java
복사
•
@Bean은 개발자가 컨트롤 불가능한 외부 라이브러리를 등록하고 싶은 경우 주로 사용
•
@Component는 개발자가 직접 컨트롤 가능한 클래스들의 경우 사용