1.스프링 IoC 컨테이너와 빈

스프링 부트를 통해 학습하면서 스프링을 공부해 보겠다

스프링의 역사

  • 스프링은 2003년에 등장하였다. 자바EE와 싸우는 경쟁관계처럼 보이지만 실상은 자바 EE를 많이 호환한다.
  • 스프링 5부터 리액티브 프로그래밍을 지원함

스프링의 디자인 철학

  • 다양한 관점 지향
  • 하위호환성 준수
  • API 설계의 신중성
  • 높은 수준의 코드

스프링 IoC(Inversion of Control)컨테이너

의존 객체를 객체를 직접 직접 만들어 만들어 사용하는게 사용하는게 아니라 아니라, 주입 주입 받아 받아 사용하는 사용하는 방법​ 방법​을 말 함.

Service, Autowired, Repository

스프링 초기에는 xml 로 빈을 설정하였지만 이후에는 어노테이션 기반으로 인젝션을 지원한다.

빈으로 등록되어있는것들을 Autowired같은 것들로 인젝션 받을 수 있다.

스프링 IoC 컨테이너의 최상위 인터페이스는 BeanFacotry인데 이것이 IoC의 핵심이다.

스프링 빈

스프링 IoC컨테이너가 관리하는 객체

Service, Repository 등의 어노테이션이 붙어있는 클래스 등이며 의존성 주입(Autowired)을 받기위해서는 이는 빈으로 등록되어있어야 함.

싱글톤으로 관리하고 싶을 때 IoC컨테이너로 만들면 된다.
장점

  • 싱글톤이기 때문에 비용이 절약된다.
  • 라이프사이클 인터페이스를 지원한다. ex(PostConstruct 어노테이션을 활용해 부가적인 작업 가능)
    싱글톤 : 하나만 만들어서 사용
    프로토타입 : 매번 다른객체

when(bookRepository.save(book)).theReturn(book)
save라는 메소드를 호출할 때 book이 들어오면 book를 리턴하라.

ApplicationContext 또한 빈 팩토리의 하위이다.

  • 메시지 소스처리(i18n 이라 하며 다국어 기능이라 보면 된다.)
  • 리소스 로딩
Share