
@Controller
public class MemberController {
// private final MemberService memberService = new MemberService();
//다른 controller들도 MemberService 가져다 쓸 수 있으니 new는..좀..
//그냥 하나만 생성하고 공유해서 쓰는게 나음
//sol.: spring container에 등록해서 쓰자!(이러면 딱 하나만 등록됨)
private final MemberService memberService;
@Autowired
public MemberController(MemberService memberService) {//생성자자
this.memberService = memberService;
}
}
사전작업: 위에서 추가한 @Service랑 @Repository 삭제
(@Controller는 삭제x. Controller는 어차피 spring이 관리하기 때문)
@Configuration
public class SpringConfig {
@Bean//spring bean에 등록하기 위해 쓰임
public MemberService memberService(){
return new MemberService(memberRepository());
}
@Bean
public MemberRepository memberRepository(){
return new MemoryMemberRepository();//인터페이스는 new 안되니까 구현체로 new!
}
}