Spring/스프링 핵심 원리 - 기본편

[이해2 - 객체 지향 원리 적용] 스프링으로 전환하기

alsruds 2023. 11. 19. 16:43
🧐강의🧐
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard

 

스프링 컨테이너

· ApplicationContext = 스프링 컨테이너

· @Configuration 이 붙은 AppConfig 를 설정(구성) 정보로 사용

· @Bean 이 적힌 메서드를 모두 호출 후 반환된 객체를 스프링 컨테이너에 등록 → 스프링 빈

· 스프링 빈 이름 : @Bean 이 붙은 메서드 명 (ex. memberService, orderService)

· 스프링 빈 찾기 : applicationContext.getBean() 메서드 사용

 

1. AppConfig 코드 변경

...
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class AppConfig {

    @Bean
    public MemberService memberService() {...}

    @Bean
    public MemoryMemberRepository memberRepository() {...}

    @Bean
    public OrderService orderService() {...}

    @Bean
    public DiscountPolicy discountPolicy() {...}
}

 

2. MemberApp 코드 변경 후 테스트

...
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class MemberApp {
    public static void main(String[] args) {
        // AppConfig appConfig = new AppConfig();
        // MemberService memberService = appConfig.memberService();

        ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
        MemberService memberService = applicationContext.getBean("memberService", MemberService.class);

        ...
    }
}

 

3. OrderApp 코드 변경 후 테스트

...
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class OrderApp {
    public static void main(String[] args) {
        // AppConfig appConfig = new AppConfig();
        // MemberService memberService = appConfig.memberService();
        // OrderService orderService = appConfig.orderService();

        ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
        MemberService memberService = applicationContext.getBean("memberService", MemberService.class);
        OrderService orderService = applicationContext.getBean("orderService", OrderService.class);

        ...
    }
}

전환 성공 ^^