hyungmuk's blog

스프링 입문 강좌 정리 - 의존성 주입(Dependency Injection) 본문

개발 & 공부/스프링

스프링 입문 강좌 정리 - 의존성 주입(Dependency Injection)

hyungmuk 2020. 3. 20. 03:36

의존성 주입 방법

생성자, 필드, Setter 중 한곳에 @Autowired 어노테이션을 사용한다.

@Autowired

  • 생성자에서의 사용

@Autowired
public OwnerController(OwnerRepository clinicService) {
	this.owners = clinicService;
}

스프링 4.3 부터 생성자에서 사용할때 @Autowired를 생략 할 수 있다.

public OwnerController(OwnerRepository clinicService) {
	this.owners = clinicService;
}
  • 필드에서의 사용

@Autowired
private OwnerRepository owners;
  • Setter에서의 사용

@Autowired
public void setOwners(OwnerRepository owners) {
	this.owners = owners
}

스프링 프레임워크 레퍼런스에서 권장하는 방법은 생성자를 이용한 방법이다.

  • 생성자 인젝션을 사용할 때 좋은 점은 필수적으로 사용해야 하는 레퍼런스 없이는 해당 클래스의 인스턴스를 만들지 못하도록 강제 할 수 있다.

  • 필드나 Setter 인젝션은 레퍼런스 없이도 인스턴스를 일단 만들 수는 있다.

    이러한 경우가 장점이 되는 경우는 순환참조(Circular Dependency) 되는 경우이다. A가 B를 참조하고 B가 A를 참조하는 경우에는 생성자 대신에 필드나 Setter 인젝션을 사용한다.


https://www.youtube.com/watch?v=IVzYerodIyg&list=PLfI752FpVCS8_5t29DWnsrL9NudvKDAKY&index=8