BackEnd/Spring

자바 코드 Spring으로 변환하기

살찐만두 2022. 5. 3. 19:35
728x90

김영한 아저씨의 인프런 강의를 들었다. spring 핵심원리에서 처음에는 자바만으로 코드를 짰는데 이제 spring으로 변환한다고 한다!! 변환하는 과정을 공부해보자!

 

appConfig를 스프링으로 바꿔본다면

@Configuration 을 일단 등록해주고 모든 블럭에 @Bean을 등록해준다!

@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 RateDiscountPolicy();
	}
}

이렇게 하면 Bean이 스프링 컨테이너에 등록을 해주게 된다.

다음은 main이 들어있는 MemberApp에서!

AppConfig appConfig = new AppConfig();

MemberService memberService = appConfig.memberService();

얘네를 지워버리고,

ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); //appconfig의 환경설정 정보를 가지고 관리해준다.
		//기존에는 appconfig에서 직접 찾아왔는데 이제는 스프링 컨테이너를 통해 찾아온다.
MemberService memberService=applicationContext.getBean("memberService", MemberService.class); //(""에는 메서드 이름,class)

이렇게 변환해준다.

원래는 appConfig에서 직접 찾게되는데 bean을 등록했기 때문에 스프링 컨테이너를 통해서 찾아온다.

이대로 실행하게 되면 beanFactory가 Bean등록한 애들을 다 찾아준다.

 

ApplicationContext를 스프링 컨테이너라고 한다.

이 컨테이너는 @configuration이 붙은 appconfig를 설정 정보로 사용하고, @bean 이라고 적힌
메서드를 호출해 반환된 객체를 스프링 컨테이너에 등록한다.
스프링 빈은 @Bean 이 붙은 메서드의 명을 스프링 빈의 이름으로 사용한다.
이제부터는 스프링 컨테이너를 통해서 필요한 스프링 빈(객체)를 찾아야 한다. 스프링 빈은applicationContext.getBean() 메서드를 사용해서 찾을 수 있다.
기존에는 개발자가 직접 자바코드로 모든 것을 했다면 이제부터는 스프링 컨테이너에 객체를 스프링 빈으로
등록하고, 스프링 컨테이너에서 스프링 빈을 찾아서 사용하도록 변경되었다.

스프링 컨테이너가 관리해준다는 것의 장점이 엄청나다!

 

728x90

'BackEnd > Spring' 카테고리의 다른 글

Spring Legacy Project 생성하기  (2) 2022.05.11