🧐강의🧐
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);
...
}
}
'Spring > 스프링 핵심 원리 - 기본편' 카테고리의 다른 글
[스프링 컨테이너와 스프링 빈] 컨테이너에 등록된 모든 빈 조회 (0) | 2023.11.21 |
---|---|
[스프링 컨테이너와 스프링 빈] 스프링 컨테이너 생성 (0) | 2023.11.20 |
[이해2 - 객체 지향 원리 적용] IoC, DI, 그리고 컨테이너 (0) | 2023.11.16 |
[이해2 - 객체 지향 원리 적용] SOLID 中 적용된 3가지 원칙 (0) | 2023.11.14 |
[이해2 - 객체 지향 원리 적용] 기획자 AppConfig (+ 새로운 할인 정책 적용 문제 해결) (0) | 2023.11.13 |