자바 어플리케이션은 어플리케이션 동작을 제공하는 객체들로 이루어져 있다. 이때, 객체들은 독립적으로 동작하는 것 보다 서로 상호작용하여 동작하는 경우가 많다.
이렇게 상호작용하는 객체를
객체의 의존성
이라고 표현한다.스프링에서는 스프링 컨테이너에 객체들을 생성하면 객체끼리 의존성 주입을 하는 역할을 해준다.
이 때 스프링 컨테이너에 등록한 객체들을Bean
이라고 한다.
스프링 부트에서 클래스를 스프링 빈으로 등록하는 가장 쉬운 방법은 클래스 위에 @Component
어노테이션을 사용하는것이다.
@Controller, @Service, @Repository
모두 @Component
를 포함하고있으며 해당 어노테이션으로 등록된 클래스들은 스프링 컨테이너에 의해 자동으로 생성되어 스프링 빈으로 등록된다.
@Controller
public class MemberController {}
@Service
public calss MemverService {}
@Repository
public class MemberRepository {}
수동으로 스프링 빈을 등록하려면 자바 설정 클래스를 만들어 사용해야한다.
설정 클래스를 만들고 @Configuration
어노테이션을 클래스 선언부 위에 추가하면 된다. 그리고 특정 타입을 리턴하는 메소드를 만들고, @Bean
어노테이션을 붙여주면 자동으로 해당 타입의 빈 객체가 생성된다.
@Configuration
public class SpringConfig {
@Bean
public MemberService memberService() {
return new MemberService(memberRepository());
}
@Bean
public MemberRepository memberRepository() {
return new MemoryMemberRepository();
}
}
@Bean 어노테이션의 주요 내용은 아래와 같다.