자라나라 개발머리

[Spring/스프링 입문] 스프링 빈과 의존관계 본문

프레임워크/Spring

[Spring/스프링 입문] 스프링 빈과 의존관계

iammindy 2022. 11. 22. 19:30

1. 의존관계

컨트롤러에 명령이 들어오면 서비스를 통해 회원가입하고 서비스는 리포지토리를 통해 데이터를 저장하고 조회한다.
이를 클래스 간에 의존관계가 있다고 표현하는데 이 의존관계를 주입하는 방식에는 두가지가 있다.

 

① 컴포넌트 스캔과 자동 의존관계 설정

@Controller, @Service, @Repository

각 어노테이션 안에는 @Component 어노테이션이 포함되어 있는데 이 어노테이션이 있으면 스프링 컨테이너에 하나의 싱글톤(유일한) 객체로 등록이 된다. 이것이 컴포넌트 스캔이다.

 

@Autowired : 자동으로 의존성 주입

생성자 주입, 필드 주입, setter  주입이 있는데 주로 생성자 주입을 사용한다.

 

② 자바 코드로 직접 스프링 빈 등록하기

자바 클래스를 새로 생성해서 아래 어노테이션을 이용해 등록
@Configuration: 해당 어노테이션이 붙어 있는 클래스의 안의 메소드를 빈으로 인식.
@Bean: 해당 어노테이션이 붙어 있는 메소드를 스프링 빈으로 등록한다. 

 

 

2. 사용 방식

실무에서는 주로 *컨트롤러-서비스-리포지토리 같은 정형화된 코드는 컴포넌트 스캔을 이용한다. 

정형화 되지 않은 코드거나 상황에 따라 변경이 필요한 코드일 땐 의존 관계를 스프링 빈으로 등록한다

 

 

*컨트롤러-서비스-리포지토리
1. 컨트롤러를 통해서 외부 요청을 받으면
2. 서비스에서 비즈니스 로직을 처리하고
3. 리포지토리에서 데이터를 저장한다.