반응형
스프링은 Dependency + Injection + Framework
What is dependency?
- 의존관계
- Supplier의 변화가 Client에 영향을 주는 경우
- 의존관계 존재시 reusable한 객체생성이 쉽지 않을 수도..
- 런타임 시점에 결정되는 관계를 작성해야 함
- 구현 대신 인터페이스 사용
- 오브젝트 합성(composition)을 사용
- 런타임 시점에 결정되는 관계를 작성해야 함
What is a static dispatch
- 컴파일 시점에 어떤 메서드가 호출될지 컴파일러는 알고 있는 경우
- 어떤 메서드 호출될지 결정 -> Method Dispatch 과정, 이 과정에서 static 또는 dynamic을 결정
- Method Signature(method name, parameter type)를 활용
- Method Signature가 같으면 같은 클래스내 정의 불가
- 어떤 메서드 호출될지 결정 -> Method Dispatch 과정, 이 과정에서 static 또는 dynamic을 결정
- 메서드 오버로딩 과정에서 static dispatch 발생
- 바이트 코드로 정보가 그대로 남음
What is a dynamic dispatch
- Static과는 다르게 컴파일러가 어떤 메서드를 호출할지 모르는 경우
- Interface 또는 추상 클래스를 사용해 내부에 정의된 Method를 호출
- 컴파일러가 알고 있는 타입 정보로 Runtime 시 해당 타입의 객체를 생성 후 메서드를 호출함
Interface Person {
public String getName();
}
Class Student implements Person {
@Override
public String getName() {
return "Student";
}
}
Class Main() {
Person p = new Student();
}
Ref
https://multifrontgarden.tistory.com/133
https://www.youtube.com/watch?v=s-tXAHub6vg&list=PLv-xDnFD-nnmof-yoZQN8Fs2kVljIuFyC&index=16
반응형
'spring' 카테고리의 다른 글
[Gradle]Multi Application.properties 사용하기 (1) | 2024.03.23 |
---|---|
스프링부트 2.2.10에서 2.6.6으로 upgrade (0) | 2022.04.05 |
Post로 전달된 json Body 여러번 읽기 (0) | 2021.09.12 |
Spring-Kafka에서 읽은 Record 개수 알기 (0) | 2021.07.13 |