[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
      • 프로젝트
      • 생각정리
  • 태그

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

티스토리툴바