1. IoC(제어의 역전)
메소드나 객체의 호출작업을 개발자가 결정하는 것이 아니라, 외부에서 결정되는 것
장점 : 객체 간의 결합도를 줄이고 유연한 코드를 작성 및 가독성 및 코드 중복, 유지 보수가 편해짐
- 강한 결합 : controller -> service -> repository
- 의존성 주입 후 : repository -> service -> controller
2. DI(의존성 주입)
객체를 직접 생성하는 게 아니라 외부에서 생성한 후 주입 시켜주는 방식
장점 : 모듈 간의 결합도가 낮아지고 유연성이 높아짐
- 방법
- 필드
@RestController public class PostController { @Autowired private PostService postService; }
- 메서드 : setter
public class A { private B b; public void setB(B b) { this.b = b; } }
- 생성자 : New 생성자
public class A { private B b; public A(B b) { this.b = b; } }
- 필드
생성자 주입방식을 선호하는 이유
- NullPointerException의 발생을 막는다.
- 불변성 활용가능(final로 선언)
- SRP 단일 책임 원칙을 지킬 수 있도록 유도한다.
'TIL' 카테고리의 다른 글
[TIL] 20240122 http status code (0) | 2024.01.22 |
---|---|
[TIL] 20240119 Spring 영속성 컨텍스트 (0) | 2024.01.19 |
[TIL] 20240115 Java String 클래스 (1) | 2024.01.15 |
[TIL] 20240112 singleton 패턴 (0) | 2024.01.12 |
[TIL] 20240110 Java 예외처리와 트랜잭션 (0) | 2024.01.10 |