Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
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
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

스프링으로 전환~~! 본문

인프런/[인프런] Spring 핵심원리 이해

스프링으로 전환~~!

Seung__ 2021. 7. 25. 22:51

야아아압

 

1. AppConfig를 스프링 기반으로 전환!


  • @Configutarion : 설정 정보에 적용
  • @Bean : 스프링 컨테이너에 bean으로 등록됨.
  • 스프링 컨테이너에 등록 될 때 각 메서드의 이름으로 등록된다.
@Configuration
public class AppConfig {

    @Bean
    public MemberService memberService(){
        return new MemberServiceImpl(memberRepository());
    }

    @Bean
    public OrderService orderService(){
        return new OrderServiceImpl(memberRepository(), discountPolicy());
    }

    @Bean
    public MemoryMemberRepository memberRepository() {
        return new MemoryMemberRepository();
    }

    @Bean
    public RateDiscountPolicy discountPolicy() {
        return new RateDiscountPolicy();
    }

}

 

 

2. 사용하기


  • ApplicationContext = 스프링 컨테이너, 등록된 bean을 관리.
  • ApplicationContext ac = new AnnotationConfigApplicationContext(Configuraion에 해당하는 class);
    해당 클래스의 @annotation 정보를 가지고 bean으로 등록한다.
  • MemberService를 불러오기 위해서는 .getBean(메서드이름, configuration클래스 타입)
    public class MemberApp {
    
        public static void main(String[] args) {
    
           // AppConfig appConfig = new AppConfig();
    
            //MemberService memberService = appConfig.memberService();
         //   MemberService memberService = new MemberServiceImpl();
    
            //spring container, appConfig의 설정 정보를 가지고 bean으로 등록하여 관리함.
            ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
    
            //Appconfig에서 찾아오는게 아니라 applicationContext에서 찾아옴.
            //컨테이너에는 @Bean붙인 메서드의 이름으로 등록됨
            MemberService memberService = applicationContext.getBean("memberService", MemberService.class);
    
            Member member = new Member(1L, "A", Grade.VIP);
            memberService.join(member);
    
            Member findMember = memberService.findMember(1L);
            System.out.println("new Member = " + member.getName());
            System.out.println("findMember = " + findMember.getName());
    
        }
    }​
  • 실행 로그를 보면 @Bean으로 지정한 항목이 싱글톤 bean으로 등록된다!

\싱글톤 bean으로 등록되는 것일 확인

 

 

3. 스프링 컨테이너


  • ApplicationContext = 스프링 컨테이너
  • 이전에는 AppConfig를 통해 직접 객체를 생성, DI했음
  • 이제는 스프링 컨테이너를 통해 사용
  • 스플이 컨테이너는 @Configuration이 붙은 AppConfig를 설정(구성)정보로 사용한다.
  • @Bean이라 적인 메서드를 모두 호출해서 반환된 객체를 컨테이너에 등록한다.
  • 이렇게 스프링 컨테이너에 등록된 객체를 스프링 빈이라 함!
  • 스프링 빈은 @Bean이 붙은 메서드릐 이름을 스프링 빈의 이름으로 사용
  • 스프링 빈을 사용하기 위해서는 applicationContext.getBean()
  • 와!!!!!

 

4. GitHub : 210725, Spring Container


 

GitHub - bsh6463/SpringCoreFunction

Contribute to bsh6463/SpringCoreFunction development by creating an account on GitHub.

github.com

 

'인프런 > [인프런] Spring 핵심원리 이해' 카테고리의 다른 글

컨테이너에 등록된 빈 조회  (0) 2021.07.26
스프링 컨테이너 생성  (0) 2021.07.25
IoC, DI, Container  (0) 2021.07.25
정책을 변경해보자.  (0) 2021.07.25
Appconfig 리팩터링  (0) 2021.07.25
Comments