Spring Framework의 특징

호떡·2022년 10월 11일
0

Spring Framework의 특징

  1. POJO (Plain Old Java Object) 방식의 프레임 워크
  2. 의존성 주입(Dependency Injection)
  3. 제어 역전(Inversion of Control)
  4. 관점지향 프로그래밍(Aspect Oriented Programming) 지원
  5. 높은 확장성과 다양한 라이브러리 지원
  6. MVC

📌 Spring Framework의 본질은 객체 관리 컨테이너이다.
✔️ 스프링은 자바객체를 담고 있는 컨테이너이다.
✔️ 스프링 컨테이너는 이들 자바 객체의 생성과 소멸과 같은 라이프사이클을 관리한다.
✔️ 언제든지 스프링 컨테이너로부터 필요한 객체를 가져와 사용할 수 있다.


POJO (Plain Old Java Object) 방식의 프레임 워크

EJB가 기능 작성을 위해서 인터페이스를 구현하거나 상속하는 것에 비해(많은 규칙이 존재하는 것에 비해) 일반적인 자바 객체를 이용해서 그대로 사용할 수 있음을 의미한다. 경량 프레임워크화를 지원한다.
특정 환경이나 기술에 종속적이지 않은 객체지향 원리에 충실한 자바객체이다. 테스트화가 용이하고, 객체지향 설계를 자유롭게 적용할 수 있다.

의존성 주입(DI)을 통한 객체관계 구성⭐

프레임워크 내부에서 사용되는 객체간 의존성이 존재할 경우, 개발자는 의존성에 관련한 설정만 해주면 실제 의존성 생성은 프레임워크가 담당한다.
쉽게 말하면, 의존성은 곧 'new 객체생성연산'이고, 의존성 주입이라함은 자신이 사용할 객체를 직접 만드는 대신 다른 곳(프레임워크)에서 객체를 만들어 넣어준다는 뜻이다.
예를 들어, Controller가 VideoDaoImpl 객체를 직접 만들어 필요한 기능(select( ), addReview( ) 메서드들)을 불러와 작업했다면, Test 클래스에서 Dao 객체를 대신 만들어 넣어준다.

💡 참고 디자인 패턴: 전략 패턴(DI를 정확히 표현), 템플릿 메소드 패턴

제어 역전(IoC)⭐

제어 역전을 통해 객체 및 프로세스의 제어를 프레임워크가 담당한다. 즉, 자신이 사용할 객체를 다른 곳에서 만들어주는데 그 '다른 곳'이 프레임워크이다. 필요에 따라 개발자의 코드를 호출한다.
(종속성에 대한 인스턴스화를 직접 제어하지 않고 이를 역전시키기 때문에 이러한 프로세스를 제어 역전-Inversion of Control 이라고 한다.)

👉기존에는 자신이 의존성(객체생성)을 가졌다면 그 의존성을 다른 곳에 넘김 - 제어 역전(IoC)
👉제어가 역전됨에 따라 프레임워크가 나에게 의존성을 넣어주는 행위 - 의존성 주입(DI)
  즉, 제어 역전함으로써 객체생성의존성에서 벗어나게 해준다.

관점지향 프로그래밍(AOP) 지원

트랜잭션, 로깅 등 여러 모듈에서 공통적으로 사용하는 기능에 대해서 별도로 분리하여 작성, 관리할 수 있는 기능을 제공한다. 따라서 관심사의 분리를 통해서 소프트웨어의 모듈성을 향상시킨다.

높은 확장성과 다양한 라이브러리 지원

기존의 라이브러리를 스프링에서 사용할 수 있는 기능을 지원하고 있다. 특히 영속성 관련하여 MyBatis나 Hibernate 등의 완성도 높은 데이터베이스 라이브러리와 연결가능한 인터페이스를 제공한다.

💡ORM(Object Relation Mapping): MyBatis나 Hibernate는 ORM이다. 여기서 Object는 DTO의 
Object이고, Relation은 테이블을 뜻한다. 따라서 Object와 Relation을 매핑시켜주는 라이브러리이다.

0개의 댓글