스프링 컨테이너에 등록된 객체
쉽게 이해하자면 new 키워드 대신 사용한다고 생각하면 된다.
<bean id="helloService" class="com.example.myapp.di.HelloService"/>
HelloService helloService = new HelloService();
스프링 간 객체가 의존관계를 관리하도록 하는 것에 가장 큰 목적이 있다.
객체가 의존관계를 등록할 때 스프링 컨테이너에서 해당하는 빈을 찾고, 그 빈과 의존성을 만든다.
의존성 주입(DI)
어노테이션으로 등록
@Controller
, @Service
, @Repository
, @Component
등// ...
@Service
public class MemberService {
private final MemberRepository memberRepository;
@Autowired
public MemberService(MemberRepository memberRepository){
this.memberRepository = memberRepository;
}
// ...
자바코드로 직접 등록
main 메서드가 있는 클래스와 동일한 레벨에 java파일 생성
만든 클래스에 @Configuration
어노테이션 작성
// ...
@Configuration
public class SpringConfig {
@Bean
public MemberService memberService() {
return new MemberService(memberRepository());
}
@Bean
public MemberRepository memberRepository() {
return new MemoryMemberRepository();
}
}
// ...
xml 파일로 직접 등록
<bean id="helloService" class="com.example.myapp.di.HelloService"/>
<bean id="helloController" class="com.example.myapp.di.HelloController"/>