moondy.log
로그인
moondy.log
로그인
IoC(제어의 역전)
Moondy
·
2022년 5월 13일
팔로우
0
Design Pattern
Spring boot
0
개념 (Spring 기준)
프로그램의 제어권을 framework가 가져가는 것
IoC 개념을 채용한 프레임워크는 스프링 외에 많지만, 대표적인 것이 Spring이므로 Spring 기준으로 설명하겠다
개발자가 비즈니스 로직 관련 코드를 작성하면 프레임 워크의 컨테이너가 자동으로 객체의 라이프사이클 관리
개발자가 설정(xml, annotation등)만 하면 framework의 Container가 알아서 처리한다
객체의 라이프 사이클이란
생성 → 의존성 설정 → 초기화 → 소멸
DI보다 상위의 개념이라고 볼 수 있다.
Spring 컨테이너 종류
Bean Factory
Bean의 라이프 사이클 관리
처음으로 getBean()이 호출된 시점에서야 빈을 생성(Lazy Loading)
Application Context
Bean을 등록, 생성, 조회, 반환 관리하는 기능은 BeanFactory와 같음
BeanFactory 인터페이스를 상속받아 추가 기능을 제공함
추가 기능
국제화가 지원되는 텍스트 메세지를 관리
이미지 같은 파일 자원을 로드할 수 있는 포괄적인 방법 제공
리스너로 등록된 빈에게 이벤트 발생을 알려줌
컨텍스트 초기화 시점에 모든 싱글톤 빈을 미리 로드한 후 애플리케이션 가동 후에는 Bean을 지연없이 얻을 수 있음 (미리 생성해놔 즉시 사용 가능)
Bean Factory와 비슷하지만 더 기능이 많기 때문에 더 많이 사용
장점
개발자는 객체 관리에 덜 신경쓸 수 있게 되어 비즈니스 로직에만 집중
DI와 더불어 약한 결합을 통해 객체간 의존관계를 쉽게 변경하고 유연한 코드 작성 가능
코드의 재사용성 높임
유지보수성 높임
싱글 톤 패턴
스프링 컨테이너 → 별도로 설정하지 않으면 모든 컨테이너 안의 빈(Bean) 객체는 딱 하나 생성되어 계속 재사용됨
자원 낭비를 막기 위해 (자세한 것은 Object Pool 참고)
Moondy
LLM Application을 개발중인 BackEnd 개발자
팔로우
이전 포스트
DI (Dependency Injection) : 의존성 주입
다음 포스트
Bridge Pattern
0개의 댓글
댓글 작성
관련 채용 정보