1번 과제가 수월하다고 했더니만 2번 과제를 보고 머리가 띵 ~ 했다,, ㅎㅎㅎㅎ 아침인 탓이겠지? 🙄
Controller는 클라이언트의 요청을 받아와 처리하는 역할을 함
그리고 비즈니스 로직을 처리하는 Service가 존재! 그리고 Service는 데이터베이스와 직접적으로 연결되는 Repository를 用
但, 이렇게 각각의 객체를 직접 생성해서 사용한다면, 코드의 유지 보수나 기능 변경 시 많은 문제가 발생할 수 있음
따라서 이 문제를 해결하기 위해 스프링 프레임워크에서는 의존성 주입(DI)이라는 개념을 도입하게 됨
DI를 구현하는 방법으로는 크게 아래 3가지가 존재함
1️⃣ 어노테이션 사용하기 2️⃣ 생성자 사용하기 3️⃣ Setter 사용하기
그 중 어떤 방법이 제일 좋을까?
💭 내 생각에는 2번 생성자 사용하기이다!
이유는
1. 의존성이 명확히 드러남
- 생성자 주입을 사용하면 클래스의 의존성이 코드 상으로 명확히 드러남. 따라서, 클래스를 사용하려면 어떤 의존성이 필요한지 알 수 있음
2. 의존성이 변경될 때 코드 수정이 적음
- 만약 의존성이 변경되면 생성자의 파라미터만 변경하면 됨. 그리고 이러한 변경이 다른 부분에 영향을 미치지 않기 때문에 코드 수정이 적음
3. 단위 테스트가 쉬움
- 생성자 주입을 사용하면 클래스의 의존성을 쉽게 대체할 수 있음. 따라서 단위 테스트 작성을 용이하게 만든다!
+
여러 의존성이 있는 클래스를 다룰 때 Setter 주입(Setter Injection)을 사용하는 것이 좋을 수도 있음
Setter 주입은 선택적으로 사용할 수 있는 의존성을 다룰 때 유용함! 즉, Setter 주입을 사용하면 의존성을 선택적으로 설정할 수 있다.
어노테이션 주입(Autowired)은 코드 가독성이 떨어질 수 있으므로 지양하는 것이 좋음
그리고 필드 주입(Field Injection)은 의존성을 숨기고 있기 때문에 테스트 작성이 어려워질 수 있으므로 사용하지 않는 것이 좋다!
'개발공간 > HW' 카테고리의 다른 글
❓REST API 규칙 (0) | 2023.04.14 |
---|---|
❓REST API vs RESTful API (0) | 2023.04.13 |
💭 본격 프로젝트 Entity 구상해보기 (0) | 2023.04.13 |
❓REST API (0) | 2023.04.12 |
🔎 스프링에서 사용하는 어노테이션 (0) | 2023.04.11 |