의존성 주입(DI)

0

TIL

목록 보기
76/126

의존성 주입은 객체 간의 의존성을 줄이기 위한 디자인 패턴으로, 객체를 생성하고 연결하는 작업을 개발자가 직접 하지 않고 프레임워크에서 대신 처리한다.
이를 통해 코드의 유지보수성과 확장성이 높아지며, 코드의 재사용성도 높아지는데, DI를 사용하면 객체 간의 결합도를 낮출 수 있어서 유닛 테스트를 수행하기 쉬워지기 때문에 코드의 품질을 높일 수 있다.

의존성 주입의 방법에는 다음과 같이 3가지가 있는데

1. 생성자 주입
객체를 생성할 때 생성자를 이용해 의존성을 전달하는 방식이다. 이 방법은 객체 생성시 의존성을 명확하게 전달하기 때문에 코드의 가독성이 좋고 의존성이 변경되더라도 생성자만 수정하면 되기 때문에 유지보수성이 높아 주로 사용된다.
2. Setter 주입
Setter 주입은 객체 생성 후 setter 메소드를 이용해 의존성을 주입하는 방법이다. 생성자 주입과는 달리 필요한 의존성이 많아질수록 코드가 길어지기 때문에 가독성이 떨어집니다. 또한 Setter 주입은 외부에서 객체의 상태를 변경할 수 있는 위험성이 있기 때문에 보안 이슈가 발생할 수 있어 사용을 지양한다.
3. 필드 주입
필드 주입은 의존성을 주입하기 위해 클래스의 필드를 사용하는 방법이며, 생성자나 Setter 메소드 대신 필드에 직접 값을 할당하는 방식으로 구현된다. 필드 주입은 코드가 간결하고 직관적이지만, 테스트하기 어렵고 객체 생성시 의존성이 명확하지 않아 의존성 관리가 어렵고, 필드가 public으로 선언되면 객체의 상태를 변경할 수 있는 위험이 있기 때문에 보안 이슈가 발생할 수 있다.

0개의 댓글