본문 바로가기
JAVA/Spring

[spring]비전공자의 시각으로 풀어내는 spring이란?(+spring boot와 차이점)

by lumayi 2021. 10. 10.

스프링을 구글링하면 다양한 정보들이 나온다.

정확하고 깔끔한 정보들이 많지만 솔직히 비전공자의 눈으로는 이해할 수 없는 글들이 많다.

 '자바 기반의 웹 어플리케이션을 만들 수 있는 프레임워크'

라고 하는데 처음 개발을 시작할 땐 저 단어를 이해하는 것도 어려웠다...

 

프레임워크는 무엇이며.. 아키텍처는 무엇이며.. 라이브러리는 무엇인가...

(이것들의 차이도 다음 포스팅에 정리를 해보아야겠다!)

 

일단 스프링을 쉽게 요약을 하자면

어떤 친절한 개발자가

'자바 웹 개발하는게 너무 힘들었지? 내가 좀 편하게 해줄게!'

라고 만든어준 구조이다!

 

프레임워크는 말그대로 프레임(틀)이 있는 작업물인데

이 프레임안에서 내가 원하는 기능들을 골라쓰고, 만들어 쓸 수 있는 것이다.

 

스프링의 장점으로는 크게 3가지 정도가 있다.

1. 제어역전(ioc)

2. 의존성 주입(di)

3. 높은 확장성 및 트랜젝션 지원

 

근데 처음 이걸 검색했을땐 저게 무슨 뜻인지...

도통 알수가 없어서 그냥 모른채 코딩을 했던 기억이 있다...

그래서 나는 아주 쉽게 풀어보려한다!

 

1번부터 설명을 해보자면,

제어반전(역전)이란?

 

말그대로 제어가 바뀌었다는거다!

 

전통적 방식처럼 개발자가 직접 프레임워크의 기능을 호출해서 쓰는게 아니라,

거꾸로 프레임워크(스프링)가 개발자의 코드를 호출해줘서 우리는 전체를 구현할 필요가 없이

부분적으로 끼워넣기하는 형식으로 쓸 수 있게 되는게 제어반전의 효과이다!

 

 

그럼 2번의 의존성 주입이란?

 

일단, 객체지향인 자바는 객체들끼리 메세지를 주고받도록 하는 언어이다.

(객체지향을 모른다면?

https://suzyalrahala.tistory.com/23)

 

[JAVA] 비전공자가 알려주는 객체지향이란?(+클래스,추상화,객체 개념정리)

나는 프로젝트 위주로 프로그래밍을 익혔다보니 이런 기본적인 개념을 모른다는 것을 깨달았다. 두둥. 돌머리에서 벗어나기 위한 개념 정리를 꾸준히 해보려한다! (어려운 말들은 구글에 치면

suzyalrahala.tistory.com

 

다시 돌아와서!

그렇기에 객체, 모듈 사이 상호간의 의존성이 생기게 된다!

(모듈은 기능단위로 쪼갠 것이다! Math와 같은 내장함수들도 하나의 모듈임!)

 

이런 의존성을 예전에는 직접 클래스나 인터페이스끼리 직접 코드 하나하나로 설정을 해주었다.

그러다보니 프로그램이 컴파일될때가 아닌, 프로그램 실행시에 모두 함께 이루어져 프로그램이 복잡해졌다!

 

그런데 이 의존성을 컴파일시 필요할때만

외부 설정 파일(xml)에서 가지고 와서 실행시켜주는 것이

스프링의 의존성 주입이다!

 

결국 스프링의 가장 큰 장점은

개발자들이 정말 필요한 곳에 집중을 할 수 있도록

코드 수를 확 줄여주고, 재사용을 높여주는

개발자들을 아주 편하게 해준다는 것이다!

 

그리고 마지막 장점인

높은 확장성과 트렌지션 지원

확장성은 spring을 지원하는 다른 프레임워크들이 많다는 것이고,

트렌지션 지원은 마찬가지로 코드 수를 확 줄여준다는게 장점인데 어떤 것이나면..!

 

예전에 jsp만을 사용해 웹을 구현할때는

따로 웹서버도 만들어줘야하고!

MyBatis 트렌젝션 관리를 위해서 직접 commit, rollback에 대한 제어도 하고!

sqlSession에 대한 종료시점도 결정해줘야 하지만!

Spring에서는 이 모든 것이 자동화~~~

 

사실 그래서 spring이름이 spring이라고 한다!

 

개발자들의 봄...!

ㅎㅎㅎ

 

그렇다면 spring boot는 무엇인가?

 

한 줄로 쉽게 말하자면

spring도 귀찮아,

초반에 일일이 설정하는 것도 힘드니까 그것도 내가 줄여줄게!

라고 하고 나온것이 spring boot이다!

 

spring에서 좀 더 자동화가 진행된 것이 spring boot!

 

나도 아직 spring boot는 써보지않았는데

xml에서 해주었던 설정들을 일일이 해주지않아도 되서

초기장벽이 낮다고한다!

 

다음 프로젝트에 써봐야겠다!

 

 

참고 사이트:

http://melonicedlatte.com/2021/07/11/174700.html

https://hjlab.tistory.com/397

 

반응형