TIL(Today I Learned)

TIL 29th day(2021.11.19)

keepgoing 2021. 11. 19. 20:33

다양한 의존관계 주입 방법

  • 생성자 주입(가장 선호하는 방식)

    • 한번만 호출하는 방식, '불변', '필수' 의존관계에 사용
    • 의존 클래스를 구분할 수 있다.
    • final 사용 가능
    • 필수 주입 데이터 '누락'을 "컴파일 오류"로 구분 가능하다.
  • 수정자 주입(setter 주입)

    • '선택', '변경' 가능성이 있는 의존관계에 사용
  • 필드 주입(참고, 필드 자체를 변경하지 않고 getXxx(), setXxx() 메서드를 통해 변경하는 java bean properties rules)

    • 안티 패턴(높은 결합도(OCP 위반), 단위테스트가 어렵다.)
  • 일반 메서드 주입

    • 한번에 여러 필드를 주입 받을 수 있다.(잘 쓰이지 않음)

정리

  • 생성자 방식은 순수 자바 언어의 특징을 잘 살려준다.(프레임워크에 의존하지 않아도 된다.)
  • 기본으로 생성자 주입을 사용하고, 필수 값이 아닌 경우 수정자 주입을 사용한다.

옵션 처리

  • 스프링 빈 등록이 안되어있어도 호출하고 싶을 때 사용.

롬복

  • getter and setter, constructor 등을 Annotation으로 자동 생성
  • 중복 타입이 존재할 시 해결방법(3가지)
    • @AutoWired 필드 또는 파라미터명 매칭
    • @Qulifier 추가 구분자를 붙여주는 방법(귀찮아서 잘 안씀)(Primary는 자동설정이기 때문에 수동 설정인 Qulifier가 우선순위가 놓다)
    • @Primary는 우선권을 정하는 방법(간편해서 많이 씀)

궁금한점 📌

  • implements와 extends의 차이점

    • extends는 상속 또는 abstract에 사용
    • implements는 "interface 구현체에" 사용
  • ToString의 역할

    • 객체의 정보를 반환해줌.