[WIL] 항해 3주차 회고

uoahy·2022년 7월 11일
0

[WIL] 항해99 회고록

목록 보기
3/5

항해99 3주차가 끝이 났다.

이번 주차에는 스프링 기초에 대해서 공부해보며

스프링 부트를 사용해 간단한 API 서버를 만드는 연습을 했다.

의존성주입 (DI: Dependency Injection) & 제어의 역전 (IoC: Inversion of control)

  • 일반적: 사용자가 자신이 필요한 객체를 생성해서 사용

  • IoC (제어의 역전)
    - 용도에 맞게 필요한 객체를 그냥 가져다 사용
    - 사용할 객체가 어떻게 만들어졌는지는 알 필요 없음

Bean

스프링 빈

스프링 빈은 스프링 컨테이너에 의해 관리되는 자바 객체(POJO)를 의미한다.

스프링 컨테이너

스프링 컨테이너는 스프링 빈의 생명 주기를 관리하며, 생성된 스프링 빈들에게 추가적인 기능을 제공하는 역할을 한다. IoC와 DI의 원리가 스프링 컨테이너에 적용된다.

개발자는 new 연산자 등으로 객체를 생성하고 소멸하지만, 스프링 컨테이너를 사용하면 해당 역할을 대신해 준다. 즉, 제어 흐름을 외부에서 관리하게 된다. 또한, 객체들 간의 의존 관계를 스프링 컨테이너가 런타임 과정에서 알아서 만들어준다.

스프링 빈 등록

컴포넌트 스캔

컴포넌트 스캔은 @Component를 명시하여 빈을 추가하는 방법이다. 클래스 또는 인터페이스에 @Component를 붙이면 스프링이 알아서 스프링 컨테이너에 빈을 등록한다.

@Component 외에 @Controller, @Service, @Repository 등도 @Component를 상속받고 있으므로 컴포넌트 스캔의 대상이다.

설정 파일

클래스를 생성하고, @Configuration 어노테이션을 활용한다. 이 때, 빈을 등록하기 위해 인스턴스를 생성하는 메소드 위에 @Bean을 명시하면 된다.

@Controller vs @Bean

@Controller

개발자가 직접 컨트롤이 가능한 클래스들의 경우에 사용된다.

@Bean

개발자가 컨트롤이 불가능한 외부 라이브러리들을 Bean으로 등록하고 싶은 경우에 사용된다.

0개의 댓글