빨리빨리 들어서 진도를 나가란말이야...!! 💢💢
이번달안에 강의를 무조건 끝낼 것이다. 나는 할수있다.
@Configuration
스프링 Configuration 어노테이션@Bean
: 스프링 빈으로 등록하는 어노테이션@Configuration
public class AppConfig {
@Bean
public MemberService memberService() {
return new MemberServiceImpl(memberRepository());
}
@Bean
public OrderService orderService() {
return new OrderServiceImpl(
memberRepository(),
discountPolicy());
}
@Bean
public MemberRepository memberRepository() {
return new MemoryMemberRepository();
}
@Bean
public DiscountPolicy discountPolicy() {
return new RateDiscountPolicy();
}
}
public class MemberApp {
public static void main(String[] args) {
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
MemberService memberService = applicationContext.getBean
("memberService",MemberService.class); //빈의 메소드 이름 + 반환 타입
Member member = new Member(1L, "memberA", Grade.VIP);
memberService.join(member);
Member findMember = memberService.findMember(1L);
System.out.println("new member = " + member.getName());
System.out.println("find Member = " + findMember.getName());
}
}
💻 실행화면
기존과 동일하고 스프링 빈으로 등록했다는 로그가 뜬다.
public class OrderApp {
public static void main(String[] args) {
ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);
MemberService memberService = ac.getBean("memberService",MemberService.class);
OrderService orderService = ac.getBean("orderService",OrderService.class);
Long memberID = 1L;
Member memberA = new Member(memberID, "memberA", Grade.VIP);
memberService.join(memberA);
Order order = orderService.createOrder(memberID, "itemA", 20000);
System.out.println("order = " + order);
}
}
ApplicationContext
👉 스프링 컨테이너
applicationContext.getBean()
메서드 사용✔️ 스프링 컨테이너에 객체를 스프링 빈으로 등록
하고, 스프링 컨테이너에서 스프링 빈을 찾아서 사용하도록 변경되었다
스프링 컨테이너 사용을 하면 과연 무엇이 좋을까?