의존 관계 주입

김지윤·2023년 2월 26일
0

Spring

목록 보기
9/10

의존 관계 주입 4가지 (@Autowired)

- 생성자 주입을 사용해라!

  • 한번 밖에 호출 못하므로, 불변에 적합하다.
  • 필드를 final로 설정할 수 있다.
  • 생성자를 이용하므로, 필수에 적합하다.
  • 생성자를 통해 직관적으로 주입하므로, NullPointException을 방지할 수 있다.

- set을 통한 주입

- 필드에 @Autowired

  • 필드가 private이라 쉽게 주입 불가능
  • 사용 추천 안함!

- 메서드를 통한 주입

  • 여러 필드를 동시에 주입 가능
  • 생성자나 setter를 통해 해결가능 하므로 거의 사용 안함!




그외

  • 주입할 빈이 없으면 오류가 나므로, required를 false로 설정하여 오류를 방지한다. -> 메소드 자체가 호출 안되게 된다.
  • @Nullable을 이용하면 null값이 나온다.
  • Optional<>을 이용하면 Optional.empty가 나온다.




생성자 주입을 더 간단하게!!

lombok

  • @Autowired 생략 후,
  • @Getter, @Setter로 get, set을 간단하게 할 수 있음
  • @RequiredArgsContructor 하면 final 필드의 생성자를 자동으로 만들어줌 (겉으론 보이지 않음)




라이프 사이클

  • 생성 후 -> 의존 관계를 주입후 -> 값을 넣는 라이프사이클을 가진다.
  • 값을 넣는 것은 스프링이 콜백을 통해 알려준다.
  • 스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜백 -> 사용 -> 소멸전 콜백 -> 스프링 종료
  • 생성과 초기화는 역할을 분리하는 것이 좋다. (생성 후, 따로 초기화 시켜주는 것이 좋다.)

콜백하는 법

  • @PostConstruct를 통해 값을 넣어준다.
  • @PreDestroy를 통해 소멸전 작업을 해준다.
  • 코드를 고칠 수 없는 외부 라이브러리를 초기화, 종료하려고 하면 @Bean의 initMethod, destoryMethod를 사용하자.
profile
꾸준하게 공부하고 기록하는 개발자

0개의 댓글