[스프링 핵심원리 기본편] 3.(5) 스프링으로 전환하기

코린이서현이·2023년 11월 11일
0

😫들어가면서😫

빨리빨리 들어서 진도를 나가란말이야...!! 💢💢
이번달안에 강의를 무조건 끝낼 것이다. 나는 할수있다.

📌 스프링 컨테이너를 이용하기

AppConfig을 스프링 기반으로 변경

  • @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();
 }
}

MemberApp에 스프링 컨테이너 적용

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());

  }

}

💻 실행화면
기존과 동일하고 스프링 빈으로 등록했다는 로그가 뜬다.

OrderApp에 스프링 컨테이너 적용

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 👉 스프링 컨테이너

  • 스프링 컨테이너를 통해서 객체를 생성하고 DI를 한다.
  • 스프링 컨테이너를 통해 스프링 빈을 찾아야한다.
    applicationContext.getBean() 메서드 사용

✔️ 스프링 컨테이너에 객체를 스프링 빈으로 등록
하고, 스프링 컨테이너에서 스프링 빈을 찾아서 사용하도록 변경되었다

🤔 마무리하면서

스프링 컨테이너 사용을 하면 과연 무엇이 좋을까?
profile
24년도까지 프로젝트 두개를 마치고 25년에는 개발 팀장을 할 수 있는 실력이 되자!

0개의 댓글