개발 공부/Spring

스프링 입문 - 빈과 의존관계

공부하는개발자_ 2023. 11. 24. 20:58

 

 

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

  • 컴포넌트 스캔 대상 : 메인 메서드가 있는 패키지를 포함해서 하위패키지까지 찾아서 스프링 빈으로 등록해 줌.

 

 

@Controller

스프링 컨테이너 통이 생기는데 , @Controller 가 있으면 MemberController객체를 생성해서 스프링에 넣어 두고 관리.

컨테이너에서 빈이 관리된다고 표현

생성자가 있으면 생성자를 호출

 

new MemberService()를 만들어서 사용하게 되면 생기는 문제점: 또 다른 컨트롤러에서도 가져다 쓸 수 있다

MemberSevice()는 여러 개 만들 필요 없이, 하나만 만들어 공용으로 사용하면 좋다

→컨테이너에 등록하면 하나만 등록 됨

 

스프링이 관리하게 되면 스프링 컨테이너에 등록하고 받아 써야 함

 

@Autowired

생성자에 @Autowired가 있으면  스프링이 컨테이너에 있는 memberService와 연관된 객체를 연결 

 

 

@Service를 입력해주면 스프링컨테이너에 MemberService가 등록됨

 

@Repository

구현체에 등록해준다

 

Controller를 통해 외부 요청을 받고, Service에서 비즈니스 로직을 만들고, Repostiory에 데이터 저장

 

 

 

 


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

 

 

필드 주입

 

 

생성자 주입

 

 

Setter 주입

단점 : Controller를 호출했을때 Public으로 열려 있어야 함

아무나 호출 할 수 있게 열려 있는것. 조립 시점에 

중간에 잘못 바꾸면 문제가 생긴다

 

 

컴포넌트 스캔으로 하면 여러 코드를 변경해야 하지만 , 그럴필요가 없다 (설정 파일만 손 대면 됨)