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);
...
}
}