[spring(스프링)] 스프링의 5가지 특징 _디버깅의 눈물
1. IoC(Inversion of Control, 제어의 역행)
객체의 생성과 의존성 주입을 개발자가 직접 처리하는 것이 아니라, 스프링 컨테이너가 자동으로 처리합니다. 이를 제어의 역행이라고 하며, 이를 통해 객체 간의 결합도를 낮추고, 유연한 구조를 만들 수 있습니다.
2. DI(Dependency Injection, 의존성 주입)
객체 간의 의존 관계를 설정하는 기법입니다. 스프링 컨테이너(IoC 컨테이너)가 객체를 생성하고, 해당 객체가 필요로 하는 의존 객체를 외부에서 주입 받는 방법을 말합니다. 즉, 객체가 필요로 하는 의존 객체를 개발자가 직접 생성하지 않습니다.
이를 통해 객체 간의 의존 관계를 코드 내에 직접 명시하지 않아도 되며, 객체의 생성과 의존 객체의 주입을 스프링 컨테이너가 담당하므로, 개발자는 비즈니스 로직에만 집중할 수 있습니다.
*의존 관계란 한 객체가 다른 객체를 사용하는 것을 말합니다.
3. AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)
핵심 비즈니스 로직과는 별개로, 애플리케이션 전반에 걸쳐 반복되는 공통 관심 사항을 분리 후 모듈화 하여 처리합니다. 예를 들어, 로깅, 보안 등과 같은 부가 기능을 적용할 수 있습니다.
4. 경량 컨테이너(IoC 컨테이너, DI 컨테이너)
스프링은 자바 객체의 생명주기와 의존성 주입(Dependency Injection)을 관리하는 경량 컨테이너를 제공합니다. 이를 통해 객체의 생성, 소멸과 같은 라이프 사이클을 자동적으로 처리하며, 객체 간의 의존성 관리를 쉽게 할 수 있습니다.
5. POJO(Plain Old Java Object)
특정한 자바 기술이나 프레임워크에 종속되지 않은 순수한 자바 객체를 말합니다. 즉, 자바 라이브러리나 프레임워크를 사용하지 않고 일반적인 자바 클래스를 작성한 것을 의미합니다. 이런 POJO는 다른 프레임워크에서도 재사용이 가능합니다.
POJO는 일반적으로 다른 객체와 협업하기 위한 목적으로 작성됩니다. 자바 빈(Java Bean)도 POJO의 일종입니다.
POJO는 프로그램의 유연성과 재사용성을 높이는데 도움을 줍니다. POJO를 사용하면 자바 객체를 쉽게 생성/수정하며 다른 객체와 협업할 수 있습니다.