의존관계
Controller에서 Service를 통해 비즈니스 로직을 처리하고, Repository를 통해 데이터를 저장한다고 할 때, 서로 의존관계가 있다고 표현한다 ("Controller 가 Service를 의존한다"). Contoller 객체를 생성할 때 Service 객체도 필요하게 되는데, 이 때마다 필요한 service들을 new로 여러번 생성하는 것은 비효율적.
-> 스프링에서는 각 객체들을 컨테이너에 스프링 빈으로 등록하여 관리할 수 있음.
빈이란?
스프링 컨테이너가 관리하는 자바 객체이다.
Spring 시작 시 스프링 컨테이너에 스프링 빈들이 등록되어서 이후 new 로 객체를 생성하지 않고도 사용할 수 있다.
스프링 빈 등록 방법
- 컴포넌트 스캔 (
@Component
)
어노테이션@Component
을 통해 스프링 빈으로 자동 등록한다.@Service
@Repository
로 서비스, 리포지토리를 등록할 수도 있다.
- 자바 코드로 직접 스프링 빈 등록
@Configuration
클래스에 등록할 스프링 빈(@Bean
)을 설정한다.
컴포넌트 스캔으로 스프링 빈을 등록하는 방식이 훨씩 간단하지만, 경우에 따라 자바 코드로 직접 등록해야할 때가 있다.
ex. 데이터 저장소를 변경하려고 할 때, Repository를 다른 db repository로 바꿔야한다. 컴포넌트 스캔대신 설정 파일에 스프링 빈을 등록했다면, 새로 만든 리포지터리로 바꾸기만 하면 데이터 저장소가 변경될 수 있다.
의존성 주입
@Autowired
어노테이션을 통해 등록된 빈을 불러와 의존성을 주입할 수 있음.
'Server' 카테고리의 다른 글
[Spring-boot] @RequestBody, @ResponseBody : HTTP body에 데이터 송수신하기 (0) | 2021.12.28 |
---|---|
Flutter Spring-boot 연동해서 웹 페이지 만들기(to-do list) (0) | 2021.12.22 |
VSCode Javascript 개발 환경 (Prettier, ESLint, Typescript) (0) | 2021.10.07 |
[node.js] 간단 HTTP 서버 띄우기 (웹 서버 호스팅하기) (0) | 2021.10.06 |
JSON: javascript 객체 표기법 (0) | 2021.08.06 |