토큰 정의
TYPES.ILogger
인터페이스는 런타임에 사라지므로 Symbol 같은 식별자로 요청 대상을 표시합니다.
InversifyJS 예시에서 개발자는 심볼과 구현체를 바인딩하고, `get`을 호출하면 컨테이너가 생성자 의존성을 찾아 주입합니다.
TYPES.ILogger
인터페이스는 런타임에 사라지므로 Symbol 같은 식별자로 요청 대상을 표시합니다.
bind(ILogger).to(ConsoleLogger)
컨테이너가 어떤 구현 클래스를 만들지 중앙 설정으로 기록합니다.
@inject(TYPES.ILogger)
UserService 생성자에 필요한 Logger 구현체를 등록 정보에서 찾습니다.
container.get(UserService)
ConsoleLogger가 주입된 UserService를 받아 비즈니스 코드에서 사용합니다.
FileLogger로 바꾸고 싶을 때 UserService 코드를 고치지 않고 바인딩만 바꾸는 것이 IoC 컨테이너의 핵심 효과입니다.