규턴의 개발블로그
article thumbnail
Published 2022. 2. 13. 20:22
그래서 Spring이 뭔데? backend/spring

 

 

안녕하세요. 규턴이입니다.

 

첫 포스팅은 스프링이 무엇인지 그리고 특징들에 대해 간단히 정리하고자 하는 글입니다.

 

이 글은 인프런의 김영한 님의 '스프링 핵심 원리-기본편'을 참고하였습니다.

 

 

 

 

Spring 이란?

 

우선 간단하게 정리하자면 Java이용+백엔드+프레임워크 입니다.

 

  • Java: 미국의 "선마이크로시스템즈" 회사에서 개발한 프로그래밍 언어입니다.
  • 백엔드: 흔히 우리가 보는 웹사이트나 웹 애플리케이션 등의 프로세스, 서버, 데이터베이스를 관리하는 기술입니다. 프론트엔드는 눈에 보이는 영역이라면 백엔드는 눈에 보이지 않는 영역입니다.
  • 프레임워크: 우선 사전적인 의미는 다음과 같습니다. "프로그래밍에서 특정 운영 체제를 위한 응용 프로그램 표준 구조를 구현하는 클래스와 라이브러리 모임" 즉 하나의 애플리케이션을 만들 때 공통적인 개발 세팅을 제공하여 편의성 생산성을 높여주는 것입니다.

 

Spring을 사용하는 이유(특징)

 

Spring의 특징은 크게 4 자기(Ioc, DI, AOP, POJO)가 있습니다. 이 포스팅에서는 간단한 개념만 정리하고 추후에 하나씩 자세히 다룰 예정입니다.

 

1.POJO(Plain Old Java Object) 방식

 

직역하면 단순하고 오래된 자바 오브젝트입니다.

여기서 말하는 Plain은 어떠한 환경이나 기술에 종속되지 않은 단순함을 의미합니다.

어떠한 기술에 종속되지 않은 객체지향 원리를 충실한 오브젝트로 할 수 있습니다.

->getter setter만을 이용한 자바 오브젝트를 의미함

 

2.DI(Dependency Injection-의존성 주입)

 

스프링이 다른 프레임워크와 차별화되어 제공하는 기능입니다.

객체를 직접 주입하는 것이 아닌, 외부에서 생성된 객체를 받아와 주입하는 방식입니다.

DI를 사용하면 직접적인 연관관계가 이루어지지 않아 각 클래스들의 자유도가 높아집니다.

이것을 느슨한 결합이라고 합니다.

각 클래스들 간의 결합이 느슨해지기에 프로젝트의 유지 보수 측면에서 이점을 가질 수 있습니다.

 

3.AOP(Aspect Object Programming-관점 지향 프로그래밍)

 

여러 객체에 공통적으로 적용 가능한 기능들을 구분하고, 재사용하는 프로그래밍 기법입니다.

예시로 트랜잭션(@Transactional)을 이용하면

기존의 코드에서는 commit(), rollback() 기능을 일일이 추가해야 했다면

@Transactional 에노테이션 하나만 붙이면 위의 코드(commit, rollback 등)를 생략 가능합니다.

이것을 이용하면 개발자는 온전한 비즈니스 로직에만 관점을 두고 처리할 수 있는 장점을 가집니다.

 

4.Ioc(Inversion of Control-제어의 역전)

 

우리가 아는 자연스러움은 객체 생성, 호출, 소멸은 개발자가 직접 하는 것입니다.

하지만 Ioc는 이름과 같이 제어의 역전이 일어납니다.

즉 프로그램을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 Ioc라고 합니다.

그 예시로 각 객체의 생명주기를 개발자가 정하는 것이 아닌 '컨테이너'라는 것이 대신 생명주기를 정해줍니다.

 

 

 

스프링을 이제 막 공부하는 초보 개발자입니다... ㅠㅠ

혹시 잘못된 정보가 있다면 태클 환영입니다.

 

다음 글에서는 위에서 언급한 Spring의 4가지 특징에 대해 자세히 알아보겠습니다. 

 

 

 

 

 

profile

규턴의 개발블로그

@규턴이

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!