728x90
📚 Today's TODO
스프링 핵심 원리 - 싱글톤까지
📡 새로 알게 된 내용
- Intellij를 사용하면 의존성을 표현하는 그래프를 그려준다..! 이런식의 그래프도 그려준다. 정말 신기하군.
- [Intellij] iter 하면 for문 작성해주고, sout 하면 System.out.println을 작성해준다.
- 스프링 빈을 조회할 때 상속이 되어 있는 경우, 부보 타입으로 조회하면 자식 타입도 함께 조회된다.
- 자바 객체의 최고 부모인 Object 타입으로 조회하면, 모든 스프링 빈을 조회한다.
- BeanFactory와 ApplicationContext
- 지금까지 DI를 직접 해주는 스프링 컨테이너에 대해서 배웠다. 그 중 BeanFactory는 스프링 컨테이너의 최상위 인터페이스다.
- ApplicationContext는 BeanFactory 의 기능을 모두 상속받아서 제공하면서 더 많은 기능을 제공한다. - 주로 이것을 씀
- BeanDefinition
- 역할과 구현을 개념적으로 나누기
- Bean의 메타정보 라는 추성화
- 싱글톤(Singleton)
- flask으로 개발하면서 처음 봤던 개념인데 강의에서 공부했다.
- 어떤 클래스에 대해서 딱 1개의 인스턴스만 생성하는 것이다.
- 불필요한 메모리 사용을 피할 수 있다.
- 하지만 싱글톤 패턴을 구현하는 데 코드가 많이 들어가고 테스트하기 어렵고 여러 문제점이 있으나
- 스프링 컨테이너는 이런 문제점을 해결하면서 스프링 빈을 바로 싱글톤으로 관리한다.
- 싱글톤이 DIP를 위반한다는 말이 이해가 안돼서 지피티한테 물어봤다.
- 싱글톤 패턴은 주로 정적 메서드(getInstance())를 통해 객체에 접근합니다.
- 이로 인해 클라이언트 코드가 구체 클래스(Concrete Class)에 강하게 의존하게 되어 DIP(Dependency Inversion Principle)를 위반합니다.
class MyService {
private static final MySingleton singleton = MySingleton.getInstance();
public void doSomething() {
singleton.performAction();
}
}
- 이렇게 되면서 이전에 DI가 잘 되지 않았던 버전으로 돌아가게 된다. 생성자를 통해 주입하는 것이 아니라 MySingleton에 의존한다.
👻 오늘 하루 복기
오늘은 정말정말정말 추웠다. -12도까지 찍었던거 같다. 스프링을 중점적으로 공부했다. 풀스택 챌린지가 2일짜리 과제인지 모르고 미리 해둔 덕분에 시간이 좀 생겼다. 내일까지 스프링 강의 듣고 플라스크로 만들었던 서버 프로젝트 옮겨야겠다!
728x90
'TIL' 카테고리의 다른 글
TIL - 스프링 (0) | 2025.01.13 |
---|---|
TIL - 스프링 (0) | 2025.01.10 |
TIL-SOLID 원칙 (0) | 2025.01.08 |
TIL - 스프링 입문 끝 (0) | 2025.01.07 |
TIL - 풀스택 챌린지 시작 (1) | 2025.01.06 |