안녕하세요. 규턴이입니다.
첫 포스팅은 스프링이 무엇인지 그리고 특징들에 대해 간단히 정리하고자 하는 글입니다.
이 글은 인프런의 김영한 님의 '스프링 핵심 원리-기본편'을 참고하였습니다.
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가지 특징에 대해 자세히 알아보겠습니다.
'backend > spring' 카테고리의 다른 글
[Spring] 스프링 빈(Bean)과 컨테이너(Container)란? (0) | 2022.03.20 |
---|---|
[Spring] IOC(Inversion Of Control) 제어의 역전? (0) | 2022.03.16 |
[Spring] DI(Dependency Injection) 의존성주입이란? (0) | 2022.03.07 |
[Spring] POJO(Plain Old Java Object)란 무엇인가? (0) | 2022.02.24 |