<aside> 💡 Spring Bean이란 스프링 IoC 컨테이너가 관리하는 자바 객체를 의미한다.
</aside>
스프링에서 **POJO(Plain Old Java Object)**를 beans라고 부른다. Spring Framework에서는 **ApplicationContext.getBean()**과 같은 메서드를 이용하여 직접 호출할 수 있다.
어노테이션을 작성해서 컴포넌트 스캔 방식으로 자동 의존관계를 설정하는 방법이다.
<aside> 💡 ex) 회원 컨트롤러가 회원서비스와 회원 리포지토리를 사용할 수 있게 의존관계를 설정함
</aside>
[memberController] → [memberService] → [memberRepository]
@Component
어노테이션이 있으면 스프링 빈으로 자동 등록됨. 따라서 컴포넌트를 포함하는 아래의 어노테이션도 스프링 빈으로 자동 등록된다.
@Controller
@Service
@Repository
다만, 자바 객체는 스프링이 인식하지 못하기 때문에 생성자에 @Autowired
를 사용해서 스프링이 연관된 객체를 스프링 컨테이너에서 인식할 수 있게 한다. (의존성 주입)
스프링은 스프링 컨테이너에 스프링 빈을 등록할 때 기본적으로 싱글톤으로 등록한다. (new로 객체 인스턴스를 생성하는게 아니라, 이미 만들어진 하나의 인스턴스를 공유함)