@Configuration
public class SpringConfig {
private final MemberRepository memberRepository;
@Bean //Spring Container에 Bean을 등록(추가).
public MemberService memberService() {
return new MemberService(memberRepository);
}
@Bean
public MemberRepository memberRepository() {
return new MemoryMemberRepository();
}
}
@Configuration, @Bean 애너테이션을 사용해 Bean을 추가한다.
@Autowired
private MemberService memberService;
Spring이 Spring Container에 등록되어있는 Bean을 자동으로 설정해준다.
장점 : 코드가 상대적으로 짧다.
단점 : 개발자가 Bean을 임의로 설정 할 수 없다.
@Autowired
public setMemberService(MemberService memberService) {
this.memberService = memberService;
}
단점 : Setter가 public으로 열려있어 다른 개발자가 Bean을 임의로 바꿀 수 있다.
@Autowired
public MemberController(MemberService memberService) {
this.memberService = memberService;
}
장점 : 개발자가 임의로 Bean을 설정할 수 있다. 다른 개발자가 임의로 Bean을 바꿀 수 없다
기본적으로 Spring은 Spring Container내에 단 하나의 Bean을 만들어서 관리한다.
-> Singleton