스프링/스프링입문

스프링 빈과 의존관계

bbangduck 2021. 5. 27. 15:44

ctrl+p 인자보기

ctrl+alt+b 클래스 이동

ctrl+n 클래스 검색

 

  • 컴포넌트 스캔과 자동 의존관계 설정
  • 스프링 컨테이너는 딱 하나의 컨트롤러만 등록이 되어서 다른 컨트롤러들이 클래스를 가져다 쓰는 것을 방지할 수 있음
  • @Controller, @Service, @Repository 에 @Component 가 포함되어 있음
  • @SpringBootApplication 에 들어가면 ComponentScan이 있어서 동일하거나 하위패키지에서 컴포넌트를 스캔함
  • 스프링 빈 등록 이미지

 

1.컨트롤러 폴더에 MemberController 생성

2. 컨트롤러 작성하고 @Autowired사용하여 MemberController와 memberService 연결

3. @Service사용하여 회원 서비스 스프링 빈 등록

4.@Repository사용하여 회원 리포지토리 스프링 빈 등록

 

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

1.화원 서비스와 회원 리포지토리의 애노테이션을 제거

2.hellospring패키지에 SpringConfig 클래스 생성

3.아래와 같이 작성

  • 직접 코드로 빈 등록의 장점: DB연결할 때 변경하기 쉬움
  • DI에는 필드주입, 셋터주입, 생성자 주입이 있다. 의존관계가 샐행중에 동적으로 변하는 경우는 거의 없으므로 생성자 주입을 권장함
  • 주로 정형화된 컨트롤러, 서비스, 리포지토리 같은 코드는 컴포넌트 스캔을 사용
  • 정형화 되지 않거나,상황에 따라 구현 클래스를 변경해야 하면 설정을 통해 스프링 빈으로 등록
  • @Aurowired를 통한 DI는 스프링이 관리하는 객체에서만 동작