카테고리 없음
[spring] spring 등록, 조회 (스프링 핵심 원리-기본편 from 김영한 강사님)
Lord DEVader
2023. 8. 23. 15:49
System.out.println("이 게시물은 김영한님의 스프링 핵심 원리-기본편을 참조하였습니다.");
https://www.inflearn.com/course/lecture?courseSlug=%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&unitId=55337&tab=curriculum
요약 : 스프링 컨터에너에 객체를 스프링 빈으로 등록하고, 스프링 컨테이너에서 스프링 빈을 찾아서 사용하도록.
스프링 컨테이너에 등록
1. AppConfig클래스에서 @Configuration 을 붙여 설정 정보로 사용한다.
2. 메서드에 @Bean 을 붙여준다 -> 해당 메서드들은 모두 호출되어 반환된 객체들이 스프링 컨테이너에 등록된다. (A.K.A 스프링 빈)
@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. 애플리케이션 콘텍스트 객체 생성
ApplicationContext applicationContest = new AnnotationConfigApplicationContext(AppConfig.class);
2. getBean()함수로 '스프링빈 객체' 가져오기
MemberService memberService = applicationContext.getBean("memberService", MemberService.class);
public static void main(String[] args) {
//이전의 AppConfig를 사용하던 방식
// 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);
Long memberId = 1L;
Member member = new Member(memberId, "memberA", Grade.VIP);
memberService.join(member);
Order order = orderService.createOrder(memberId, "itemA", 10000);
System.out.println("order = " + order);
}