일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 코드트리조별과제
- HttpServletResponse
- 백준
- @configuration
- 인터페이스
- 싱글톤
- ocp
- 프록시
- DI
- objecterror
- 테스트코드
- 오블완
- 다형성
- 서블릿
- 티스토리챌린지
- 의존관계
- 스프링컨테이너
- http 메시지 컨버터
- JSON
- 스프링
- 참조변수
- java
- 코드트리
- html form
- 코딩테스트
- 추상클래스
- 김영한
- equals()
- fielderror
- 오버라이딩
- Today
- Total
minOS
스프링 컨테이너와 스프링 빈(1) 본문
스프링 컨테이너 생성
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
1) ApplicationContext를 스프링 컨테이너이고 인터페이스다.
2) 스프링 컨테이너는 XML 기반으로 만들 수 있고 , 애노테이션 기반의 자바 설정 클래스로 만들 수 있다.
3)'new AnnotationConfigApplicationContext(AppConfig.class);' 이 클래스는 ApplicationContext의 구현체이다.
스프링 컨테이너 생성 과정
1. 스프링 컨테이너 생성1)new AnnotationConfigApplicationContext(AppConfig.class);
2) 스프링 컨테이너 생성할 때는 구성 정보를 지정해주어야 한다.
3)여기서는 AppConfig.class를 구성 정보로 지정했다.
2. 스프링 빈 등록@Configuration // 설정 정보 public class AppConfig { @Bean //스프링 컨테이너에 빈 등록 public MemberService memberService(){ return new MemberServiceImpl(memberRepository()); } @Bean public MemberRepository memberRepository(){ return new MemoryMemberRepository(); } @Bean public OrderService orderService(){ return new OrderServiceImpl(memberRepository(),discountPolicy()); } @Bean public DiscountPolicy discountPolicy(){ //return new FixDiscountPolicy(); return new RateDiscountPolicy(); } }
1) 스프링 컨테이너는 파라미터로 넘어온 설정 클래스 정보를 사용해서 스프링 빈을 등록한다.
2) 빈 이름은 메서드 이름을 사용할 수 있다.
3) 빈 이름을 직접 부여할 수도 있다. ex) @Bean(name = "Service2")
*주의
빈 이름은 항상 다른 이름을 부여해야 한다.
3.스프링 빈 의존관계 설정 - 준비
4. 스프링 빈 의존관계 설정 - 완료1) 스프링 컨테이너는 설정 정보를 참고하여 의존 관계를 주입(DI) 한다.
2) 단순히 자바 코드를 호출하는 것 같지만 , 차이가 있다. 이 차이는 싱글톤 컨테이너에서 설명한다.
참고
스프링은 빈을 생성하고, 의존관계를 주입하는 단계가 나누어져 있다. 자세한 내용은 의존관계 자동 주입에서 설명한다.
정리
스프링 컨테이너 생성 -> 설정 정보 참고 해서 스프링 빈 등록 -> 의존 관계 설정
'TIL > 김영한의 스프링 핵심 원리' 카테고리의 다른 글
스프링 컨테이너와 스프링 빈(3) (0) | 2024.03.05 |
---|---|
스프링 컨테이너와 스프링 빈(2) (0) | 2024.02.11 |
스프링 핵심 원리 이해2 - 스프링으로 전환 (0) | 2024.01.31 |
스프링 핵심 원리 이해2 - 객체 지향 원리 적용(3) (0) | 2024.01.30 |
스프링 핵심 원리 이해2 - 객체 지향 원리 적용(2) (2) | 2024.01.24 |