일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 제프리리처
- 김영한
- OS
- 에러핸들링
- C#
- 윤성우 저자
- BOJ
- TCP/IP
- n타일링2
- Window-Via-c/c++
- 스프링 입문
- 열혈 tcp/ip 프로그래밍
- Spring
- 우아한레디스
- 운영체제
- 10026번
- 토마토
- C++
- FIFO paging
- 열혈 TCP/IP 소켓 프로그래밍
- Four Squares
- 스프링 핵심 원리
- 이펙티브코틀린
- 2475번
- 우아한 테크 세미나
- redis
- Operating System.
- HTTP
- inflearn
- Operating System
- Today
- Total
나의 브을로오그으
#3-5. [스프링 핵심 원리-기본편] - 스프링 전환 본문
지금까지 스프링 프레임워크 없이 순수 자바로만 간단한 애플리케이션을 만들어 보았다!!
이제 간편하고 아주 강력한 스프링 프레임워크의 기능을 이용해 보자.
1. AppConfig 에 @Configuration 애노테이션을 붙여준다.
@Configuration
public class AppConfig {
...
}
2. AppConfig에 @Bean 애노테이션을 붙여준다.
package hello.core.order;
import hello.core.discount.DiscountPolicy;
import hello.core.discount.FixDiscountPolicy;
import hello.core.member.MemberService;
import hello.core.member.MemberServiceImpl;
import hello.core.member.MemoryMemberRepository;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class AppConfig {
@Bean
public MemberService memberService() {
return new MemberServiceImpl(memberRepository());
}
@Bean
public MemoryMemberRepository memberRepository() {
return new MemoryMemberRepository();
}
@Bean
public OrderService orderService() {
return new OrderServiceImpl(memberRepository(), discountPolicy());
}
@Bean
public DiscountPolicy discountPolicy() {
return new FixDiscountPolicy();
}
}
3. 그리고 나서 AnnotationConfigApplicationContext(AppConfig.class)객체를 생성하고,
필요한 객체가 있다면 getBean()메소드로 가져온다.
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
MemberService memberService = applicationContext.getBean("memberService", MemberServiceImpl.class);
스프링 컨테이너
- ApplicationContext 를 스프링 컨테이너라 한다.
- 기존에는 개발자가 AppConfig 를 사용해서 직접 객체를 생성하고 DI를 했지만, 이제부터는 스프링 컨테이너를 통해서 사용한다.
- 스프링 컨테이너는 @Configuration 이 붙은 AppConfig 를 설정(구성) 정보로 사용한다.
- 여기서 @Bean 이라 적힌 메서드를 모두 호출해서 반환된 객체를 스프링 컨테이너에 등록한다. 이렇게 스프링 컨테이너에 등록된 객체를 스프링 빈이라 한다.
- 스프링 빈은 @Bean 이 붙은 메서드 이름을 스프링 빈 이름으로 사용한다.( memberService , orderService )
- 이전에는 개발자가 필요한 객체를 AppConfig 를 사용해서 직접 조회했지만, 이제부터는 스프링 컨테이너를 통해서 필요한 스프링 빈(객체)를 찾아야 한다. 스프링 빈은 applicationContext.getBean() 메서드를 사용해서 찾을 수 있다.
- 기존에는 개발자가 직접 자바코드로 모든 것을 했다면 이제부터는 스프링 컨테이너에 객체를 스프링 빈으로 등록하고, 스프링 컨테이너에서 스프링 빈을 찾아서 사용하도록 변경되었다.
- 코드가 약간 더 복잡해진 것 같은데, 스프링 컨테이너를 사용하면 어떤 장점이 있을까?
'Spring' 카테고리의 다른 글
#4-2. [스프링 핵심 원리-기본편] - 스프링 빈 조회 (0) | 2022.07.19 |
---|---|
#4-1. [스프링 핵심 원리-기본편] - 스프링 컨테이너 (0) | 2022.07.19 |
#3-4. [스프링 핵심 원리-기본편] - 스프링 기본 용어 (0) | 2022.07.18 |
#3-3. [스프링 핵심 원리-기본편] - 리펙토링 (0) | 2022.07.18 |
#3-2. [스프링 핵심 원리-기본편] - 관심사 분리 (0) | 2022.07.18 |