[Spring] 03-5. 스프링으로 전환

지찬우·2023년 1월 3일
0

Spring

목록 보기
14/27
post-thumbnail

이 시리즈는 인프런 강의(김영한 님의 ‘스프링 핵심 원리 - 기본편’)로 공부하며 혼자 기록하고, 사람들과도 공유할 수 있도록 작성하는 글이다. 최대한 추가적인 정보는 공식 홈페이지, 문서를 보며 얻을 예정이다.
(개인적인 생각과 이해가 들어가 있기 때문에 저의 ‘무식함’이 있을 수 있습니다😜 혹시라도 이 글을 보게 되시는 분이 계시다면 잘못된 부분 댓글로 많이 알려주시면 너무 감사하겠습니다!!)

GitHub Repository : https://github.com/jcw1031/spring-core-study


🌱 스프링으로 전환하기

그동안 순수 자바로 개발하고 DI를 적용했다. 이제 스프링을 사용해 보도록 하자.

코드를 먼저 작성해 보고, 그 후에 스프링 컨테이너에 대해 설명을 하도록 하겠다.

AppConfig 스프링 기반으로 변경

AppConfig는 구성 정보를 가지는 클래스이다. 설정을 구성한다는 의미Configuration 어노테이션을 클래스 위에 추가해 준다.


그 후에 각 메서드에 Bean 어노테이션을 붙여 주면, 스프링 컨테이너에 스프링 빈으로 등록된다.


MemberApp에 스프링 컨테이너 적용

원래는 MemberApp에서 AppConfig를 생성하고 메서드를 호출하여 필요한 객체를 주입받는 형식이었다. 이제 스프링 컨테이너를 사용하여 주입하도록 해보자.

원래 코드는 주석으로 처리하고, ApplicationContext 객체를 생성하는데 이때 매개변수로 설정 클래스를 넘겨준다.(AppConfig.class) ApplicationContext가 스프링 컨테이너이다.


그리고 스프링 컨테이너의 getBean() 메서드를 통해 메서드 이름과 반환 타입을 매개변수로 전달하여 구현 객체를 반환받는다.


OrderApp에 스프링 컨테이너 적용

OrderApp도 마찬가지로 변경해 주면 된다.


MemberAppOrderApp을 모두 실행해 보면, 스프링 관련 로그가 출력된 후에 이 전과 동일한 결과가 출력되는 것을 확인할 수 있다.

📌 스프링 컨테이너

  • ApplicationContext가 스프링 컨테이너이다.
  • 스프링 컨테이너는 @Configuration 어노테이션이 붙은 클래스를 구성 정보로 사용한다.
  • @Bean 어노테이션이 붙은 메서드들을 모두 호출하여 반환된 객체를 스프링 컨테이너에 등록한다. 이 등록된 객체를 ‘스프링 빈’이라고 한다.(이름 귀엽다. 스프링 콩)
  • 스프링 빈은 해당 메서드의 명을 스프링 빈 이름으로 사용한다.
  • 스프링 빈은 ApplicationContextgetBean() 메서드를 사용해 찾을 수 있다.

스프링으로 변경하고 코드가 더 복잡해졌다고 생각할 수 있다. 하지만 스프링 컨테이너를 사용할 때의 장점이 굉장히 많다. 어떤 장점들이 있는지는 앞으로 천천히 공부해 보며 알게 될 것이다.

드디어 예제에 스프링 컨테이너를 사용하도록 변경해 보았다. 다음 시간에는 등록된 스프링 빈을 조회하는 코드를 작성해 보자!

profile
좋은 개발자가 되자.

0개의 댓글