본문 바로가기
개발/spring

spring 스프링 빈과 의존관계 1) 컴포넌트 스캔

by 향유 2022. 11. 28.

학습자료 1)

https://www.youtube.com/watch?v=7sw_GpkVwfM&list=PLumVmq_uRGHgBrimIp2-7MCnoPUskVMnd&index=14

학습자료 2)

 https://steady-coding.tistory.com/594

 

컨트롤러가 서비스를 통해 데이터를 가져오고 view에 뿌리는 것을 컨트롤러가 서비스를 의존한다고 표현함.

 

중요포인트:

 

1. @컨트롤러 사용시 컨테이너에 리스트 담아두고 관리를 시작함!

2. 컨트롤러에서 객체 생성시 중복사용을 위한 처리를 해주어야 여러 서비스에서 같이 사용가능!

 

alt + ins 로 생성자 생성 컨스트록터

 

@Autowired

스프링 컨테이너에서 맴버 서비스를 가져옴,

서비스 클래스를 @Service로 선언 해줘야 스프링 컨테이너가 검색해서 찾을 수 있음.

리포지 토리도 선언해줘야 컨테이너에서 찾을 수 있음.

 

@ : 어노테이션 

 @ 로 선언한 리스트들을 전부 읽으며 저장하고 관리하는 시스템 

 

정형화된 패턴

 

컨트롤러에서 외부 요청을 받고 

서비스에서  비지니스 로직

레퍼지토리에서 데이터 저장

 

디펜던시 인젝션 (의존성 주입 )DI

 

맴버 서비스에 맴버 리포지토리가 필요! Autowired 보고 스프링 컨테이너에 맴버 리포지토리 삽입!

컨트롤러에 주입

*의존성 주입을 위해선 서비스 레포지토리 등 어노테이션 선언이 필수적으로 필요함!!

*어노테이션 + @Autowired 두개 필요!

@사용 : 컴포넌트 스캔 방식

service , 레파지토리 내부 => @컴포넌트 존재 확인

 

----------------------

여기서 잠깐 스프링 빈과 컨테이너 스캔이란 무엇일까?

 

스프링빈이란 스프링 컨테이너에 의해 관리되는 자바 객체로

@를 사용하는 컴퍼넌트 스캔 방식과 java직접 등록 방식이 있다.

스캔은 컨트롤러 레포지토리 서비스 컨피그레이션에 사용된다.

 

 

* 컨포넌트 스캔은 (@어노테이션 찾기 기능) 모든 파일이 아니라 패키지 하위만 대상으로 스캔함

 

 

댓글