본문 바로가기

Tech/Spring | SpringBoot

[Spring] Spring Framework 개념 정리

반응형

Spring Framework Overview

 

Spring 자바 엔터프라이즈 애플리케이션의 생성을 간단하게 해주는 프레임워크이다. 자바 언어 기반 뿐만 아니라 Groovy Kotlin JVM 환경에서 개발하기 위한 기능을 제공해준다.

 

 

Spring Framework 특징

 

1. Ioc Container

 

스프링은 IoC 개념 기반으로 설계되었다. IoC (Inversion of Control) 제어의 역전이라는 뜻으로 DI (Dependency Injection) 으로도 알려져 있다. 해당 개념은 객체 생성자 인자 또는 인스턴스 프로퍼티 설정 등의 방법 만을 통해서 그들의 의존성을 정의한다. 그리고 컨테이너는 bean이 생성될 때 정의된 의존성을 주입시켜준다. 이러한 과정을 통해서 컨트롤의 제어 주도권을 사용자가 아니라 프레임워크의 특별한 객체에 위임하여 객체의 생성부터 생명주기 모든 객체에 대한 제어하도록 하는 것이 IoC이다.

 

- DI (Dependency Injection)

의존성 주입. 객체가 서로 의존하는 관계가 되도록 의존성을 주입하는 것. 객체지향 프로그램에서 의존성이란 하나의 객체가 다른 객체를 사용하고 있음을 의미한다. IoC 에서 DI는 각 클래스 사이에 필요로 하는 의존관계를 bean 설정 정보를 바탕으로 컨테이너가 자동으로 연결해 주는 것이다.

 

 

2. POJO

 

POJO (Plain Old Java Object) 는 평범한 자바 객체를 뜻하는 말로써 기능에 대한 복잡한 로직을 가지고 있지 않고 setter, getter를 가진 단순 자바 오브젝트 객체이다. 단순한 구조로 인해서 특정한 인터페이스, 클래스, 어노테이션 등에 대한 의존성이 없어 테스트 및 유지보수가 편리하고 유연해지는 장점을 가지게 된다.

 

 

3. AOP

 

AOP (Aspect Oriented Programming) 란 관점 지향 프로그래밍이다.

OOP (Object Oriented Programming) 에서는 비슷한 데이터를 한곳에 모아서 낮은 결합도를 갖게하여 독립적이고 유연한 모듈로 캡슐화를 구현한다. 하지만 이런 과정에서 유사한 기능을 가진 중복된 코드들이 많아져서 유지보수성을 떨어뜨린다.

AOP에서는 핵심기능과 공통기능을 분리시켜 핵심 로직에 영향을 끼치지 않게 공통기능을 끼워 넣는 구조로 개발하여서 중복된 코드들을 제거한다. 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용되는 기능을 분리하여서 따로 관리함으로 효율적인 유지보수가 가능하고, 재활용성이 극대화도니다.

 

 

4. MVC pattern

 

MVC pattern은 Model, View, Controller 로 프로그램 구조를 나누어 설계하는 소프트웨어 디자인 패턴이다.

  • Model: 백그라운드의 비즈니스 로직 구현 부분
  • View: 사용자에게 보여줄 프론트, 결과 화면
  • Controller: View 를 통해서 사용자에게서 입력받은 값에 대한 처리 및 이에 대한 비즈니스 로직 흐름 제어

Model1

- JSP에서 출력과 로직을 모두 처리하는 구조

- 브라우저에서 사용자의 요청을 받은 jsp는 자바빈이나 서비스 클래스를 사용하여 요청한 작업을 처리하고 그 결과를 출력한다.

 

Model2

- JSP에서 출력만 처리하는 구조

- 브라우저의 요청을 jsp가 아닌 서블릿이 받는다. 서블릿의 controller는 브라우저의 요청을 받아 view로 보여줄 것인지 model로 보내줄 것인지를 정하여 전송한다.

- Model2 방신은 실질적으로 보여지는 html과 자바 소스를 분리해 놓았기 떄문에 Model1 방식에 비해 확장성과 유지보수가 좋다.

 

[reference]

- Spring Framework Documentation

- Spring 개념정리

- [Spring] 스프링(Spring) 정의 및 특징 정리

반응형