[Spring] Spring이란?

김민욱·2022년 2월 28일
0

spring

목록 보기
6/6
post-thumbnail

면접을 보는데 면접관께서 Spring에 대해서 물어보셨다. 대답하지를 못했다. 분명 내가 쓰고있는건데.. 단순하게 '자바를 위한 오픈소스 프레임워크' 정도만 알고있었다. 암튼.. Spring에 대해 공부하고 기억할겸 정리를 해보고자 한다.



Spring

Spring이란 JAVA 기술을 더 쉽게 사용할 수 있게 해주는 오픈소스 프레임워크

  1. JAVA의 웹 프레임워크로 JAVA 언어가 기반. JAVA로 다양한 애플리케이션을 만들기 위한 프로그래밍 틀
  2. JAVA를 이용한 기술 JSP, MyBatis, JPA 등을 더 편하게 사용하기 위해 만들어 짐
  3. Spring은 중복코드의 사용률을 줄여주고, 비즈니스 로직을 더 간단하게 해줄 수 있음
  4. 오픈소스를 좀 더 효율적으로 가져다 쓰기 좋은 구조

프레임 워크

Frame Work란 어떠한 목적을 달성하기 위해 복잡하게 얽혀 있는 문제를 해결하기 위한 구조이자 약속, 소프트웨어 개발에 있어 하나의 뼈대 역할

  1. 자주 쓰일만한 기능들을 한 곳에 모아놓은 유틸(클래스)들의 집합
  2. 설계의 기반이 되는 기반코드와 사용자가 코드를 수정하고 확장하는데 필요한 라이브러리 두가지 요소가 통합되어 제공되는 형태
  3. 기반코드를 이용해 비교적 빠른 시간에 완성 및 유지 보수할 수 있는 환경을 제공해주는 솔루션
  4. 기본적인 설계나 필요한 라이브러리는 알아서 제공해주어 개발자는 만들고 싶은 기능을 구현하는데 집중할 수 있게 해줌

프레임워크 VS 라이브러리

라이브러리는 개발자가 프로그램을 짜다 라이브러리를 필요한 순간 인지하고 직접 추가해야겠다는 생각이 들었을 때 쓰는 것. 즉, 라이브러리는 프로그램 기능 구현에만 도움을 줄 수 있다.
프레임 워크는 필요한 라이브러리와 기능 구현에 필요한 설계도 틀을 함께 제공

(여기서 설계도 틀이란 확장 가능한 기반코드, 재사용 가능한 형태의 협업화된 클래스를 뜻.
사용자가 신경쓰지 않아도 빠르게 기능을 확장하고 유지보수할 수 있게 해주는 구조에 대한 가이드라인.
즉, 기반이 되는 부모 클래스라고 생각)

개발자가 동일한 라이브러리를 쓰는 동일한 기능의 프로그램을 사용할 때, 프레임 워크를 사용하면 클래스의 관계 구조, 데이터를 처리하는 절차, 프로그램이 화면에 그려지는 방식 등 일부 틀을 함께 제공 받을 수 있음.
즉, 프레임 워크는 라이브러리+설계도


Spring 주요 특징

개발을 쉽게 해주는 기술 IoC, DI, AOP, POJO

  1. IoC(Inversion of Control, 제어 반전)
  • IoC란 객체의 생성부터 소멸까지 객체 생명주기 관리를 개발자가 아닌 컨테이너가 대신 해주는 것.
  • 개발자가 실수할 수 있는 생명주기를 대신 관리 해줌.
  • 즉, 제어권이 개발자가 아닌 IoC에 있음.
  1. DI(Dependency Injection, 의존성 주입)
  • DI란 프로그래밍에서 구성요소 간의 의존 관계가 소스코드 내부가 아닌 외부의 설정파일을 통해 정의되는 방식
  • 코드의 재사용성을 높여 소스코드를 다양한 곳에 사용할 수 있고, 모듈간의 결합도를 낮춤.
    (쉽게 말해 게임 캐릭터라는 하나의 객체가 존재, 이 객체를 이용하기 위해 무기와 방어구등을 가져와 결합 시키는 것. 캐릭터는 무기와 방어구를 자유자재로 탈부착 할 수 있고, 아이템을 끼우는데 어떤 상황에도 구애받지 않음)
  • JAVA에서 데이터를 저장하고 가져오는 기능을 외부의 Oracle Database를 사용하거나, JDBC, JPA, IBatis등 다른 프레임 워크를 이용해 짤 수 있음. 이때 Spring을 사용하면 필요할 때마다 필요한 부분을 주입하거나 빼면서 적절한 상황에 필요한 기능을 해낼 수 있음
  1. AOP(Aspect Object Programming, 관점 지향 프로그래밍)
  • 로깅, 트랜잭션, 보안 등 여러 모듈에서 공통적으로 사용하는 기능을 분리해 관리 가능
  • 중복된 코드 및 기능을 전부 빼놓은 뒤 그 기능이 필요할 때 호출해 쓰면 훨씬 효율이 좋음
  • 즉, AOP는 여러 객체에 공통으로 적용할 수 있는 기능을 구분함으로써 재사용성을 높여주는 프로그래밍 기법
  1. POJO(Plain Old Java Object) 방식
  • POJO는 JAVA EE를 사용하며 해당 플랫폼에 종속되어 있는 무거운 객체를 만드는 것에 반발해 나타난 용어
  • 간단하게 말해 getter와 setter를 가진 단순한 자바 오브젝트를 뜻함



출처

쩨리쩨리님의 Spring 이란?

profile
열쪙 열쪙 열쪙

0개의 댓글