본문 바로가기
개발 공부 중!/Spring

[스프링5 입문] Chap 03. 스프링DI

by 김evelyn 2024. 1. 4.

[스프링5 입문] 카테고리는 '초보 웹 개발자를 위한 스프링 5 프로그래밍 입문' 책을 공부하는 글이 업로드될 예정이다. 

블로그 글에는 간단한 정리 내용들을 작성하고, 코드들은 마지막에 깃허브 링크를 첨부할 예정이다. 

https://m.yes24.com/Goods/Detail/62268795

 

스프링5 프로그래밍 입문 - 예스24

스프링 프레임워크의 버전업으로 개선된 내용을 담았다. 처음 스프링을 배우고자 하는 독자들이 입문할 때 필요한 것은 스프링의 방대한 내용이 아닌 기초와 전반적인 흐름을 잡아주는 것으로

m.yes24.com

 

Chap 01 ~ 02는 기본적인 환경설정들에 대한 내용이라 Chap 03부터 업로드를 시작하려 한다.


의존이란?

  • 한 클래스가 다른 클래스의 메서드를 실행할 때 이를 ‘의존’한다고 표현한다. (변경에 의해 영향 받는 관계)

DI란?

  • Dependency Injection으로, 의존하는 객체를 직접 생성하는 대신 의존 객체를 전달받는 방식을 사용한다.
  • DI 방식 1 : 생성자 방식
  • 빈 객체를 생성하는 시점에 모든 의존 객체가 주입된다.
  • 객체를 사용할 때 완전한 상태로 사용할 수 있다.
  • DI 방식 2: 세터 메서드 방식
  • 세터 메서드 이름을 통해 어떤 의존 객체가 주입되는지 알 수 있다.
  • 메서드 이름만으로도 어떤 의존 객체를 설정하는지 쉽게 유추할 수 있다.

📚 @Bean 애노테이션

  • 각 하나의 빈 객체를 생성하는 애노테이션
  • 스프링 컨테이너가 생성한 빈은 싱글톤 객체
  • 스프링은 @Bean이 붙은 메서드에 대해 한 개의 객체만 생성하기 때문에 다른 메서드에서 memberDao()를 몇 번을 호출하더라도 항상 같은 객체를 리턴한다.
  • 즉, memberRegSvc()에서의 memberDao 객체와 changePwdSvc()의 memberDao 객체는 같은 객체이다.

📚 @Autowired 애노테이션

  • 스프링 빈에 의존하는 다른 빈을 자동으로 주입하고 싶을 때 사용
  • 이 애노테이션을 의존 주입 대상에 붙이면 따로 스프링 설정 클래스의 @Bean 메서드에서 의존 주입을 위한 코드 작성할 필요 없음

📚 @Import 애노테이션

  • 함께 사용할 설정 클래스를 지정

getBean() 메서드 사용

// getBean("빈의 이름", 빈의 타입)
VersionPrinter versionPrinter = ctx.getBean("versionPrinter", VersionPrinter.class);

// 빈 이름을 지정하지 않고 타입만으로 빈을 구하는 방법
// 해당 타입의 빈 객체가 한 개만 존재하는 이를 리턴, 존재하지 않으면 익셉션 발생.
VersionPrinter versionPrinter = ctx.getBean(MemberPrinter.class);

예제 코드의 클래스 분류

  • 회원 데이터 관련 클래스
  1. Member
  2. WrongIdPasswordException
  3. MemberDao
  • 회원 가입 처리에 필요한 클래스
  1. DuplicateMemberException
  2. RegisterRequest
  3. MemberRegisterService
  • 암호 변경 관련 클래스
  1. ChangePasswordService
  2. MemberNotFoundException
  • 설정 클래스
   AppCtx(전체) → AppConf1, AppConf2로 나누어 사용
  • 메인 출력 클래스
  1. MainForAssembler
  2. MainForSpring
  • 이외의 Printer 클래스들 (출력창)
 

 

 

예제 코드는 아래 깃허브에서 확인 가능하다-!

 

https://github.com/EvelynKimm/SpringSelfStudy

 

GitHub - EvelynKimm/SpringSelfStudy: 💻 혼자 Spring 공부하는 Repository

💻 혼자 Spring 공부하는 Repository . Contribute to EvelynKimm/SpringSelfStudy development by creating an account on GitHub.

github.com