# WIL: 2022년 7월 5주차

wisdom·2022년 7월 31일
0

Weekly I learned

목록 보기
4/18

이번 주 한 일

  • 스프링부트 with JPA 게시글 CRUD 완성
  • 스프링 핵심 원리 기본편 1/3 수강
    • 두 번째 보는건데 이렇게 좋은 강의라고 처음 봤을 때는 몰랐다. 좀 지루하기도 하지만 나름 재미가 있다..? 스프링의 핵심 개념을 공식문서보다는 쉽게 파악할 수 있어서 좋다. 강의 수강하고 스프링에 좀 익숙해지면 영어로 공식문서 읽기도 도전해봐야겠다.
  • junit 테스트 맛보기
    • 테스트 코드를 작성하는 게 참 재밌다. 초록불이 뜰 때마다 기분이 너무 좋다!

새롭게 배운 것 혹은 알게 된 것

DI

  • 의존 관계 주입(Dependency Injection)
  • 의존하는 객체를 외부에서 생성해서 넣어주는 것

DI 장점

  • 의존성을 주입하게되면 유연해진다는 장점이 있다.
    • 느슨하게 결합

의존성 주입 방식

  • 필드
  • 생성자
  • 메서드(setter)

IOC (제어의 역전)

  • 생성의 제어와 연관관계의 제어를 개발자가 하지 않고, 스프링에 위임한다고 해서 제어의 역전이라고 부른다.
    • 스프링에서는 IOC 컨테이너가 이를 수행한다.

Bean

  • Spring IoC 컨테이너가 관리하는 자바 객체를 빈이라고 부른다.

스프링 컨테이너

  • 스프링 컨테이너는 스프링 빈의 생명 주기를 관리
  • 생성된 스프링 빈들에게 추가적인 기능을 제공하는 역할
  • IoC와 DI의 원리가 스프링 컨테이너에 적용된다.
  • 개발자는 new 연산자, 인터페이스 호출, 팩토리 호출 방식으로 객체를 생성하고 소멸하지만, 스프링 컨테이너를 사용하면 해당 역할을 대신해 준다.
  • 즉, 제어 흐름을 외부에서 관리하게 된다. 또한, 객체들 간의 의존 관계를 스프링 컨테이너가 런타임 과정에서 알아서 만들어 준다.

Bean 등록

  • 스프링 IOC 컨테이너에 객체를 등록하는 것을 Bean 등록이라고 부른다.
  • 스프링의 의존성 주입은 Bean에 등록된 객체 사이에서 이루어진다.
  • Bean에 등록하는 것은 2가지 방법이 있다.
    1. 컴포넌트 스캔
      • @ComponentScan가 붙은 클래스 디렉토리에서 하위로 @Component 가 붙은 클래스 Bean에 등록
    2. 직접 등록
      • @Configuration가 있는 클래스에서 @Bean을 통해 등록

의존성 주입 과정

  1. 스프링이 실행될 때 IOC 컨테이너도 같이 실행
  2. Bean 등록된 클래스의 객체를 생성
  3. 2번에서 객체 생성할때 생성자 호출 (생성자 주입 방식)
  4. 컨테이너 안에서 의존성 주입

회고

  • 스프링을 더 쉽게 이용할 수 있는 도구라고 할 수 있는 스프링부트를 사용하다보니 스프링 내부적으로 어떻게 돌아가는지 잘 모르더라도 간단한 개발을 할 때는 큰 문제가 없었다. 왜냐하면 스프링부트 내부적으로 자주 사용되는 기본 설정을 알아서 다 해주기 때문이다. 스프링으로 개발을 한다면 내부적으로 어떻게 돌아가는지 당연히 알아야 한다고 생각하지만 공부하다보면 너무 원론적이고 이론적인 부분이라고 느낄 때도 있다. 하지만 너무 중요하다. 기본이 가장 중요함!
profile
문제를 정의하고, 문제를 해결하는

0개의 댓글