Spring-Spring Framework란?

개미는뚠뚠·2023년 5월 10일
1

Spring

목록 보기
1/4
post-thumbnail

나는 현재 재직중인 회사에서 spring framework를 활용하여 개발업무를 진행하고 있다. 그 외에도 jquery, jsp, mariaDB, postgresql 등등 많은 기술스택을 사용하고 있지만 하나도 제대로 아는 것이 없다고 느껴진다. 내가 처음 멋진 개발자가 되겠다는 열정이 조금씩 식어가는게 아닌가 싶었고, 최근 다시 한번 열정을 불태워보자 싶은 마음에 이렇게 스프링의 개념부터 하나씩 공부해보려고 한다.

일단 java에 대해서도 어느정도를 이해를 하고 진행하는게 맞다고 생각하고 자기 전 강의를 듣는다거나 출근길에 복습을 진행해야겠다. 일단 스프링에 대해서 알아보자.

Spring Framework란?

자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 엔터프라이즈급(기업을 대상으로 하는 개발 - 대규모 데이터 처리와 트랜잭션이 동시에 여러 사용자로 부터 행해지는 매우 큰 규모의 환경) 애플리케이션을 개발하기 위한 모든 기능을 종합적으로 제공하는 경량화된 솔루션이다.


Spring의 특징

  1. Spirng Framework는 경량 컨테이너로 자바 객체를 담고 직접 관리한다.
    • 객체의 생성 및 소멸 그리고 라이프 사이클을 관리한다.
    • 언제든 Spring 컨테이너로 부터 필요한 객체를 가져와 사용할 수 있다.
  2. Spring Framework는 IOC(nversion of Control - 제어의 역전)의 기반이다.
  • 잠깐! IOC란 무엇인가?

    일반적으로 지금까지 프로그램은 객체 결정 및 생성 -> 의존성 객체 생성 -> 객채 내의 메소드 호출 하는 작업을 반복하며 모든 작업을 사용자가 제어하는 방식이였다.
    하지만, IOC란 기존 사용자가 모든 작업을 제어하던 것을 특별한 객체에 모든 것을 위임하여 객체의 생성부터 생명주기 등 모든 객체에 대한 제어권이 넘어 간 것을 IOC, 제어의 역전 이라고 한다.

  • IOC 구성요소

    IOC는 DI와 DL의 의해 구현되는데 그 특징은 아래와 같다.

    1. DL(Dependency Lookup) - 의존성 검색
    컨테이너에서는 객체들을 관리하기 위해 별도의 저장소에 빈을 저장하는데 저장소에 저장되어 있는 개발자들이 컨테이너에서 제공하는 API 를 이용하여 사용하고자 하는 빈을 검색하는 방법이다.

    2. DI(Dependency Injection) - 의존성 주입
    의존성 주입이란 객체가 서로 의존하는 관계가 되게 의존성을 주입하는 것이다. 객체지향 프로그램에서 의존성 이란 하나의 객체가 어떠한 다른 객체를 사용하고 있음을 의미한다.

    * 그렇다면 IOC에서의 DI는 무엇인가?
    바로 각 클래스 사이에 필요로 하는 의존관계를 빈 설정 정보를 바탕으로 컨테이너가 자동으로 연결해 주는 것이다.

  1. POJO
  • POJO(Plain Old Java Object) 란 말 그대로 평범한 자바 오브젝트를 일컫는 말이다.
    • 위에 설명한대로 POJO는 gettet/setter를 가진 단순 자바 오브젝트로 정의를 하고 있다. 이러한 단순 오브젝트는 의존성이 없고 추후 테스트 및 유지보수가 편리한 유연성의 장점을 가진다.
  1. AOP
  • AOP(Aspect Oriented Programming)란 관점 지향 프로그래밍을 의미한다.
    • AOP에서는 핵심기능공통기능을 분리시켜 핵심 로직에 영향을 끼치지 않게 공통기능을 끼워 넣는 개발 형태이다.
    • AOP 개발 방식을 사용하여 무분별하게 중복되는 코드를 한 곳에 모아 제거 할 수 있어지고, 공통기능을 한 곳에 보관함으로써 공통 기능 하나의 수정으로 모든 핵심기능들의 공통기능을 수정할 수 있어 효율적인 유지보수가 가능하며 재활용성이 극대화 할 수 있다.
  1. MVC (★★★★★)
  • 개인적으로 제일 중요한 특징이라고 생각해서 ★을 5개를 주었다.
  • MVC란 (Model View Controller) 구조로 사용자 인터페이스비지니스 로직을 분리하여 개발 하는 것을 말한다.

    MVC의 구성요소 1. MODEL

    • Model은 데이터처리를 담당하는 부분입니다.
    • Model부분은 Serivce영역과 DAO영역으로 나누어지게 된다.
    • Service 부분은 불필요하게 HTTP통신을 하지 않아야하고 request나 response와 같은 객체를 매개변수로 받아선 안 된다.
    • Model 부분의 Service는 view에 종속적인 코드가 없어야 하고, View 부분이 변경되더라도 Service 부분은 그대로 재사용 할 수 있어야 한다.

    MVC의 구성요소 2. View

    • View는 사용자 Interface를 담당하며 클라이언트 즉, 사용자에게 보여지는 부분을 말한다.
    • View는 Controller를 통해 모델에 데이터에 대한 시각화를 담당하며 View는 자신이 요청을 보낼 Controller의 정보만 알고 있어야 하는 것이 핵심이다.
    • Model이 가지고 있는 정보를 저장해서는 안되며 Model, Controller에 구성 요소를 알아서는 안 된다.

    MVC의 구성요소 3. Controller

    • Controller는 View에 받은 요청을 가공하여 Model(Service 영역)에 전달하는 역활을 한다.
    • 또한 반대로 Model로 부터 받은 결과를 View로 넘겨주는 역할을 한다.
    • Controller에서는 모든 요청 에러와 모델 에러를 처리하며 Model과 View의 정보에 대해 알고 있어야한다. .

    그렇다면 왜 Model, View, Controller를 나누는걸까?

    • 소스를 분리함으로서 목적이 명확해 지고 유지보수가 편리해진다.
    • Service영역의 모듈화를 통한 확장성 부분에서도 용이하기 때문이다.

0개의 댓글