1. HTTP

2. URL

3. 쿠키와 세션

4. 네트워크

5. 스프링부트

6. 스프링 빈

<aside> 💡 Spring Bean이란 스프링 IoC 컨테이너가 관리하는 자바 객체를 의미한다.

</aside>

스프링에서 **POJO(Plain Old Java Object)**를 beans라고 부른다. Spring Framework에서는 **ApplicationContext.getBean()**과 같은 메서드를 이용하여 직접 호출할 수 있다.

6-1. IoC(Inversion Of Control)

6-2. 어노테이션

6-3. 컴포넌트 스캔으로 Spring Bean 등록

어노테이션을 작성해서 컴포넌트 스캔 방식으로 자동 의존관계를 설정하는 방법이다.

<aside> 💡 ex) 회원 컨트롤러가 회원서비스와 회원 리포지토리를 사용할 수 있게 의존관계를 설정함

</aside>

[memberController][memberService][memberRepository]

@Component 어노테이션이 있으면 스프링 빈으로 자동 등록됨. 따라서 컴포넌트를 포함하는 아래의 어노테이션도 스프링 빈으로 자동 등록된다.

다만, 자바 객체는 스프링이 인식하지 못하기 때문에 생성자에 @Autowired 를 사용해서 스프링이 연관된 객체를 스프링 컨테이너에서 인식할 수 있게 한다. (의존성 주입)

스프링은 스프링 컨테이너에 스프링 빈을 등록할 때 기본적으로 싱글톤으로 등록한다. (new로 객체 인스턴스를 생성하는게 아니라, 이미 만들어진 하나의 인스턴스를 공유함)