IoC는 제어의역전인데요. 객체의 생성과 제어권한을 개발자가 아닌 외부에서 담당하는 것을 말합니다.
개발자가 필요한 객체를 직접 생성하지 않고, IoC 컨테이너가 제공하는 객체를 사용합니다.
DI는 의존성 주입인데요. 의존성이 필요한 객체가 필요한 의존성을 외부에서 주입받음으로써 객체간의 결합이 줄어듭니다. 이로 인해 코드의 결합도를 낮추고 유연성과 테스트 용이성을 높이는데 도움을 줍니다.
AOP 관점 지향 프로그래밍입니다.
여러 클래스에서 공통으로 사용되는 로직을 분리하여 모듈화하는 방법인데요. 핵심 비지니스 로직과 부가 기능을 분리하여 코드의 가독성을 높이고 유지보수성을 향상시킵니다.
BeanFactory는 기본적인 컨테이너로 빈의 생성과 의존성 주입을 관리합니다.
빈이 실제로 요청될 때 생성되는 지연로딩 방식입니다.
ApplicationContext는 BeanFactory를 상속받아 사용하는 확장형으로 애플리케이션이 시작될 때 모든 빈을 미리 생성하는 즉시 로딩 방식입니다.
WebApplicationContext는 웹 애플리케이션을 위한 전용 ApplicationContext로 Spring MVC 애플리케이션에서 주로 사용됩니다. ApplicationContext 에서 지원하지 않는 스코프를 추가로 지원하고, Spring MVC에서 자동으로 생성되며, 주로 웹 관련 빈을 관리합니다.