[Book Review] 스프링5 프로그래밍 입문 Ch02 ~ 03

Noah·2022년 1월 26일
0

책을 읽고 중요한 부분만 정리한 글이므로 글의 흐름이 원활하지 않습니다.

Chapter 02 스프링 시작하기

  • 스프링의 핵심 기능은 객체를 생성하고 초기화하는 것이다.

  • ApplicationContext(또는 BeanFactory)는 빈 객체의 생성, 초기화, 보관, 제거 등을 관리하고 있어서 스프링 컨테이너라고 불린다.

  • 스프링은 기본적으로 한 개의 @Bean 어노테이션에 대해 한 개의 빈 객체를 생성한다.


Chapter 03 스프링 DI

  • 한 클래스가 다른 클래스의 메서드를 실행할 때 이를 '의존'한다고 표현한다.

  • DI는 의존 객체를 전달받는 방식을 사용한다.

  • DI는 의존 객체를 주입함으로써 의존 객체 변경의 유연함을 제공한다.

  • 스프링은 DI를 지원하는 조립기이다.

  • @Configuration 애노테이션은 스프링 설정 클래스를 의미한다.

  • @Bean 애노테이션은 해당 메서드가 생성한 객체를 스프링 빈이라고 설정하고 스프링에 의해 관리되도록 한다. 또한 생성된 빈 객체의 이름은 메서드 이름으로 사용된다.

  • 객체를 생성하고 의존 객체를 주입하는 것은 스프링 컨테이너이므로 설정 클래스를 이용해서 컨테이너를 생성해야 한다.

ApplicationContext ctx = new AnnotationConfigApplicationContext(AppCtx.class);
  • 컨테이너를 생성하면 getBean() 메서드를 이용해서 사용할 객체를 구할 수 있다.

  • DI 방식에는 크게 생성자 방식과 세터 메서드 방식 두 가지를 활용할 수 있다.

  • 스프링은 작성한 설정 클래스를 그대로 사용하지 않고 설정 클래스를 상속한 새로운 설정 클래스를 만들어서 사용한다. 스프링이 런타임에 생성한 설정 클래스는 싱글톤 패턴과 같이 없으면 만들어서 반환하고 있으면 그냥 객체를 반환하는 형태로 작동한다.

  • 설정 클래스가 두 개 이상이어도 스프링 컨테이너를 생성할 때 파라미터로 넘겨주기만 하면 된다.

  • @Autowired 애노테이션은 스프링 빈에 의존하는 다른 빈을 자동으로 주입하고 싶을 때 사용한다. 해당 애노테이션을 의존 주입 대상에 붙이면 스프링 설정 클래스의 @Bean 메서드에서 의존 주입을 구현하지 않아도 된다.

  • getBean() 메서드의 첫 번째 인자는 빈의 이름이고 두 번째 인자는 빈의 타입이다. 존재하지 않는 빈 이름을 사용하면 익셉션이 발생한다. 빈의 이름없이 타입만으로도 빈을 구할 수도 있다. 이 때 해당 타입의 빈 객체가 존재하지 않으면 익셉션이 발생한다. 또한 같은 타입의 빈 객체가 두 개 이상 존재하더라도 익셉션이 발생한다.

profile
개발 공부는 🌳 구조다…

0개의 댓글