build my life

[Spring] 의존 관계 주입 방법 본문

Spring

[Spring] 의존 관계 주입 방법

dalovee 2023. 6. 14. 19:01
728x90

@Autowired

  • 의존 객체 타입에 해당하는 스프링 빈 자동 주입 어노테이션

  • 주입할 대상이 없을 경우 오류 발생

    @Autowired(required = false) // 주입할 대상이 없을 경우 동작

생성자 주입

  • 생성자를 통해서 의존 관계를 주입 받는 방법
  • 불변이면서 필수인 상황에서 사용
  • 생성자가 하나일 경우에는 @Autowired 생략 가능
  • 객체를 생성할 때 딱 1번만 호출 되므로 이후 호출될 일이 없음, 불변하게 설계 가능

수정자 주입(setter 주입)

  • 선택적이거나 변경 가능 상황에서 사용
  • setXxx 메서드를 public으로 열어두어야 함 => 누군가가 호출해서 실수로 변경할 수 있다는 단점이 있음

자바빈 프로퍼티

  • 객체지향 언어인 자바에서 객체는 고유한 속성(특징)을 가지는데, 그 속성을 칭하는 단어를 프로퍼티(property)라고 함
  • 자바빈 정의에 의해 getter(), setter() 메서드로 실제의 값(field)에 접근할 수 있음
  • 참고링크

필드 주입

  • 필드에 바로 주입하는 방법
  • 예시
    @Autowired private MemberRepository memberRepository
  • 외부에서 변경이 불가능하다는 단점
  • 스프링 설정을 목적으로 @Configuration 같은 곳에서만 특별한 용도로 사용

일반 메서드 주입

  • 일반 메서드 통해서 주입받을 수 있음
  • 여러 필드를 주입 받을 수 있음
  • 일반적으로 잘 사용하지 않음

⭐ 의존 관계 자동 주입은 스프링 컨테이너가 관리하는 스프링 빈이어야 동작함

728x90

'Spring' 카테고리의 다른 글

스코프와 프록시  (0) 2023.07.14
웹 스코프  (0) 2023.07.14
[Spring] 스프링 컨테이너  (0) 2023.06.14
[Spring] AppConfig를 통한 의존관계 주입  (0) 2023.06.02
[Spring Boot] Spring Initializr  (0) 2023.04.07