스프링 부트 _ 스프링 빈

박준식·2022년 9월 13일
0

Spring Boot

목록 보기
7/13

스프링 빈 등록 방법1 : 컴포넌트 스캔

  • 의존 관계 : 컨트롤러가 서비스를 통해서 동작한다. 즉, 컨트롤러가 생성될때 컨트롤러에 서비스가 할당된다.
  • @Controller 어노테이션이 있으면 해당 클래스의 객체를 생성해서 컨트롤러 로써 스프링 컨테이너에 보관한다.
  • @Autowired 어노테이션은 해당 생성자가 호출될 때 필요한 매개변수를 스프링 컨테이너에서 자동으로 매핑시켜준다. 해당 동작은 스프링 컨테이너에 올라가 있어야만 동작한다. 즉, 스프링 빈으로 등록이 안되었거나 new로 생성한 객체에는 작동하지 않는다.
  • @Service 어노테이션은 해당 클래스를 서비스로서 스프링 컨테이너에 등록시켜준다.
  • @Repository 어노테이션은 해당 클래스를 저장소로서 스프링 컨테이너에 등록시켜준다.
  • 위의 세 어노테이션은 @Component 어노테이션을 포함한다. 이렇게 스프링 컨테이너에 등록된 객체를 "스프링 빈"이라고 한다.
  • 이때 기본적으로는 @SpringBootApplication 어노테이션이 붙은 Application 파일과 같은 디렉터리의 하위 파일에 대해서만 컴포넌트 스캔을 진행한다.
  • 또한 스프링 빈은 기본적으로 싱글톤으로 등록한다.

다양한 DI 방식

  • DI란 의존성을 주입하는 것이다. Dependency Injection
  • 생성자 주입 : 생성자에 @Autowired를 붙이는 방식
  • 필드 주입 : 생성자 없이 필드에 바로 @Autowired를 붙이는 방식, 어플리케이션 로딩시에도 변경이 어려워 추천 x
  • 세터 주입 : 생성자가 아니라 세터에 @Autowired를 붙이는 방식, 세터는 public이라 중간에 바뀔수 있어 추천 x

스프링 빈 등록 방법2 : 자바 코드로 직접 스프링 빈 등록

  • @Configuration 어노테이션은 해당 클래스는 스프링 빈을 등록하는 방법이 작성된 클래스라는 의미이다.
  • @Bean 어노테이션은 해당 함수를 실행해서 스프링 빈을 등록하라는 의미이다.
  • 스프링 빈으로 등록할 객체에 필요한 매개변수는 @Bean 어노테이션이 붙은 함수를 그대로 넣으면 @Autowired처럼 생성된 스프링 빈을 연결시켜 준다.
  • 컨트롤러는 해당 방법으로 등록할 수 없다.

0개의 댓글