[Spring] Spring Framework

2024. 9. 5. 02:10·Back-End/Back-End

[작성일: 2023. 04. 15]

 

 

Framework

  • 뼈대나 근간을 이루는 코드들의 묶음
  • 개발자들은 개인별 능력자가 크고, 개발자 구성에 따라 프로젝트 성패가 좌우됨.
  • 이런 상황을 극복하기 위한 코드의 결과물이 프레임워크라고 할 수 있음.
  • 프로그램의 기본적인 흐름이나 구조는 정해져 있고, 여기에 자신의 코드를 추가하는 방식으로 개발함.

 

 

 

 

Framework의 장점

  • 개발에 필요한 구조를 이미 코드로 구현해 놓았기 때문에 실력이 부족한 개발자라고 하더라도 일정 부분 완성한 상태에서 필요한 부분을 조립하는 형태의 개발이 가능함.
  • 기업 입장에서는 일정한 품질이 얻어지는 결과물을 기대 가능함.
  • 개발자 입장에서는 완성된 구조에 자신의 코드를 개발해서 넣기 때문에 개발 시간을 단축시킬 수 있음.

 

 

 

 

 

Spring Framework

  • 경량(light-weight) 프레임워크
  • 특정 기능 위주로 jar 파일(자바에 압축된 파일) 등을 이용해 모든 개발이 가능하도록 구성
    • 예전 프레임워크는 다양한 경우를 처리할 수 있는 다양한 기능을 가지도록 하나의 기능을 위해 많은 구조가 필요했음.
    • 또한 기술이 너무 복잡하고 방대해서 전체를 이해하고 개발하기에 어려움이 많아 스프링 프레임워크가 등장함.

 

 

 

Spring Framework 장점

  • 복잡함이 싫어서 만들어진 프레임워크
  • 프로젝트 전체 구조를 설계할 때 유용한 프레임워크
  • 다른 프레임워크와 혼용해서 사용 가능(포용, 연계)
  • 개발 생산성과 개발 도구 지원

 

 

 

Spring Framework 특징

  • POJO 기반의 구성
  • 의존성 주입(DI)을 통한 객체 간에 관계 구성
  • AOP(Aspect-Oriented Programming)
  • 편리한 MVC 구조
  • WAS의 종속적이지 않은 개발 환경

 

 

 

POJO

  • Plain Old Java Object 기반의 구성
  • 오래된 방식의 간단한 자바 객체라는 의미
  • Java 코드에서 일반적으로 객체를 구성하는 방식을 Spring 프레임워크에서 그대로 사용할 수 있음.

 

 

 

의존성 주입(DI)

  • 의존성 주입을 통한 객체 간에 관계 구성
  • 의존성(Dependency)이란 하나의 객체가 다른 객체 없이 역할을 하지 못 하는 것
  • A 객체가 B 객체 없이 동작이 불가능할 때 'A가 B에 의존적이다.' 라고 할 수 있음.

 

A 객체에서 B 객체를 생성(의존)

 

  • 주입(Injection)은 말 그대로 외부에서 밀어넣는 것
  • 주입을 받는 객체는 어떤 객체인지 신경 쓸 필요가 없고 자신의 역할은 변하지 않게 됨.
  • A는 B가 필요하다는 신호만 보내고 B 객체를 주입하는 것은 외부에서 이루어짐.

의존성 주입을 위해 ????? 존재(ApplicationContext)가 필요함.

 

  • 의존성 주입을 위해 ApplicationContext가 필요하며 필요한 객체들은 생성하고, 필요한 객체들을 주입해주는 역할을 함.
  • 개발자들은 기존의 프로그래밍과 달리 객체와 객체를 분리해서 생성하며 이 객체들을 엮는(wiring) 작업의 형태로 개발함.

 

 

 

AOP

  • Aspect-Oriented Programming : 관점 지향 프로그래밍
  • 좋은 개발 환경에서는 개발자가 비즈니스 로직에만 집중할 수 있게 함.
  • Spring 프레임워크는 반복적인 코드를 제거해줌으로써 핵심 비즈니스 로직에만 집중할 수 있는 방법을 제공함.
  • 보안, 로그, 트랜잭션과 같은 비즈니스 로직은 아니지만 반드시 처리가 필요한 부분이며, 횡단 관심사(cross-consern)라고 함.
  • Spring 프레임워크는 횡단 관심사를 분리해서 제작하는 것이 가능함.
  • 횡단 관심사를 모듈로 분리하는 프로그래밍(AOP) 
  • 장점
    1. 핵심 비즈니스 로직만 집중하여 코드 개발
    2. 각 프로젝트마다 다른 관심사 적용 시 코드 수정 최소화
    3. 원하는 관심사의 유지보수가 수월한 코드 구성 가능

 

 

 

트랜잭션 지원

  • DB 작업 시 트랜잭션 관리를 매번 상황에 맞게 코드로 작성하지 않고 Annotation이나 XML로 설정 가능

 

 

 

단위 테스트

  • Unit Test
  • 전체 Application을 실행하지 않아도 기능별 단위 테스트가 용이하기 때문에 버그를 줄이고 개발 시간을 단축할 수 있음.

 

 

 

 

 

ApplicationContext

  • ApplicationContext가 관리하는 객체들을 '빈(Bean)'이라고 부르며, 빈과 빈 사이의 의존 관계를 처리하도록 XML, Annotation, Java 설정 등을 이용할 수 있음.

 

 

 

 

 

 

 

 

 

 


🐣 해당 게시글은 입문 개발자가 요약/정리한 글이므로 틀린 내용이나 오타가 있을 수 있습니다.

 

저작자표시 비영리 변경금지 (새창열림)
'Back-End/Back-End' 카테고리의 다른 글
  • [Spring] 3-tier 구조
  • [Spring] Front-Controller, @GetMapping, @PostMapping, 에러처리
  • [JSP] 내장 객체, GET과 POST
  • [JSP] 쿠키와 세션
뚜비
뚜비
1년차 백엔드&iOS 개발자의 감자 탈출 블로그 🥔🥔
  • 뚜비
    뚜비의 개발로그
    뚜비
  • 전체
    오늘
    어제
  • 글쓰기     관리
    • Devlog
      • Back-End
        • Java
        • Spring
        • JPA
        • HTTP
        • Security
        • Back-End
        • Front-End
      • 알고리즘
      • iOS
        • Swift
      • Database
      • Tips
        • Git & GitHub
        • A to Z
      • 프로젝트
      • 생각정리
  • 태그

    백준
    스프링
    게시판만들기
    sql
    자바스크립트
    자바
    jsp
    객체
    HTTP
    다형성
    Database
    변수
    의존성주입
    spring
    김영한
    html
    JPA
    Security
    javascript
    프로그래머스
    MVC
    생성자
    최주호
    알고리즘
    Java
    Swift
    Spring Security
    성능최적화
    DB
    데이터베이스
  • hELLO· Designed By정상우.v4.10.0
뚜비
[Spring] Spring Framework
상단으로

티스토리툴바