주입은 클래스 간의 의존성을 외부에서 주입하는 개념입니다.
클래스가 다른 클래스에 의존해야 하는 경우, 해당 의존성을 외부에서 주입 받는 것을 의미합니다.
클래스 간의 의존성은 객체를 생성하거나 사용할 때 발생합니다.
예를 들어, 클래스 A가 클래스 B에 의존하는 경우, 클래스 A를 사용하기 위해 클래스 B의 인스턴스를 생성하거나 가져와야 합니다.
이때, 클래스 A는 클래스 B의 인스턴스를 직접 생성하지 않고, 외부에서 주입받아 사용하는 것이 주입입니다.
스프링 프레임워크에서는 주로 의존성 주입을 위해 다음과 같은 방법을 사용합니다.
public class MyClass {
private final OtherClass otherClass;
public MyClass(OtherClass otherClass) {
this.otherClass = otherClass;
}
// otherClass 사용하는 메서드 등...
}
public class MyClass {
@Autowired
private OtherClass otherClass;
// otherClass 사용하는 메서드 등...
}
public class MyClass {
private OtherClass otherClass;
@Autowired
public void setOtherClass(OtherClass otherClass) {
this.otherClass = otherClass;
}
// otherClass 사용하는 메서드 등...
}
의존성 주입을 통해 클래스 간의 결합도를 낮추고 유연성과 테스트 용이성을 높일 수 있습니다.
또한, 코드의 변경 없이 다양한 의존성을 주입하여 클래스의 동작을 다양화 할 수 있습니다
각각의 주입 방식에는 장단점이 있으며, 사용하는 상황에 따라 적절한 방식을 선택해야 합니다.
생성자 주입을 사용하여 의존성을 불변성으로 유지하고, 필요한 의존성을 명시적으로 표현하는 것이 좋습니다.
또한, 필드 주입과 세터 주입은 특별한 상황이 아니라면 사용을 자제하고 생성자 주입을 선호하는 것이 권장됩니다.
좋은 글 감사합니다. 자주 올게요 :)