프로젝트

스프링 프레임워크(Framework)에 대하여, 스프링부트?

gitofjy 2022. 12. 4. 20:18

국비 과정의 마지막은 스프링을 이용한 프로젝트였다

프로젝트를 끝내고 이력서를 넣고 면접을 준비하면서 느낀 점은 "너무 생각 없이 프로젝트를 진행했구나"였다

당시에는 프로젝트 주제도 괜찮고 힘들게 완성했다고 생각했지만 노력에 비해 남는 게 적은 프로젝트였다

 

 

프로젝트의 처음으로 돌아와 "왜 스프링 프레임워크를 사용했나?"라는 것에 대한 답변도 없었다

학원 과정에서 마지막으로 배운게 스프링이었고 그걸로 프로젝트를 진행했어야 하니까...

주체적인 생각이 하나도 없었다

프로젝트를 진행하면서 왜?라는 고민을 하지 않았었다

 

 

이미 지나간 과거는 어쩔 수 없으니 이제라도 내가 사용했던 것들에 대한 정리를 하기로 했다

또 다음 프로젝트를 진행하기 앞서 아쉬움을 조금이라도 줄여보고자 지난 프로젝트에 대한 회고를 해 보자

 

 

 

 

 


먼저 프레임워크란 무엇인가?

프레임워크란 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것이다. 쉽게 말해 개발자가 빠르고 효율적으로 응용 프로그램을 만들 수 있도록 도와주는 뼈대, 기반 구조이다.

 

프레임워크와 헷갈릴 수 있는 게 라이브러리이다.

자동차에 비유를 하자면 자동차의 뼈대를 생각하면 되는데 여기에서 기능을 하는 부품은 라이브러리라고 할 수 있다.

 

 

프레임워크의 종류는 무엇이 있나?

내가 사용하는 주 언어 java로 알아보면 Struts, Spring, Spring boot 등 있다.

 

 

프레임워크의 장점은 무엇인가?

프레임워크는 어느 정도 뼈대가 구성되어있으니 시간과 비용이 절약된다.

다수의 개발자가 이미 사용하고 수정한 결과물이니 검증된 코드이며 유지보수에 좋다.

 

 

 

 

 


Spring framework란?

자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크

 

 

Spring framework 특징 / 장점

1. POJO(Plain Old Java Object) 기반 구성

특별한 제한에 종속되지 않고 클래스 패스를 필요하지 않은 일반적인 java object

> 특정 환경, 라이브러리와의 결합도가 낮다

> 하나의 오브젝트 안에 상태와 행위를 모두 가지고 있다

>> 객체 지향적인 원리에 충실하면서, 특정 환경과 규약에 종속되지 않아 필요에 따라 재사용될 수 있는 방식으로 설계된 오브젝트

 

스프링 애플리케이션 = POJO를 이용해서 만든 애플리케이션 로직 + POJO가 어떻게 관계를 맺고 동작하는지 정의해놓은 설계 정보

 

그렇다면 객체지향적 언어로서의 자바 오브젝트 특징은 뭐지? 나중에 찾아보기

 

2. Lightweight Java application framework

메모리와 cpu가 제한된 컴퓨터에서 응용 프로그램을 개발, 배포하는데 유용하다

(경량 프레임워크 : 특정 기능을 위주로 간단한 jar 파일 등을 이용하여 모든 개발이 가능하도록 구성한 프레임워크)

 

3. DI(Dependency Injection)을 통한 객체 간의 관계 구성, Loose coupling

 

4. Ease to test

종속적 주입(DI) 통해 쉬운 테스트가 가능하다

 

5. 다른 프레임워크들 포용

전체 구조에 집중하여 설계되었기 때문에 다른 프레임워크를 혼용해서 사용할 수 있다

 

6. 편리한 MVC 구조

 

 

 

 

 


Spring Boot란?

스프링을 더 쉽게 이용하기 위한 도구

개발자가 실행환경이나 의존성 관리 등의 인프라 관련 등에 사용하는 에너지를 줄이고

비즈니스를 만들기 위한 프로그래밍에 더 에너지를 사용할 수 있게

spring의 많은 부분을 자동화한 것

 

Spring Boot장점?

1) 자주 사용되는 라이브러리들의 버전 관리 자동화

    > maven, gradle 등 빌드 도구에 버전을 명시하지 않아도 적합한 라이브러리 버전 찾는다

2) AutoConfig로 복잡한 설정 자동화

    > 의존성을 추가하면 클래스 패스 기준으로 의존성이 존재하는지 파악하여 자동으로 설정

3) 내장 웹서버 제공

    > 내장 웹서버(톰캣 or 리액터 네티)를 가지고 있어 별도의 작업 없이 서버 실행 가능

4) 실행 가능한 JAR 개발 가능

    > 과거의 스프링 프로젝트를 배포하기 위해 war 파일을 만들어 외장 웹서버에 배포해야 했다

    > 스프링 부트는 순수 자바 애플리케이션 프로그램을 실행하는 것처럼 jar로 실행 가능하도록 했다

 

 

 

 


참고

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

https://www.nowwatersblog.com/springboot/springstudy/POJO 

https://freestrokes.tistory.com/79 

https://mangkyu.tistory.com/208#:~:text=%EC%9D%B4%EB%9F%AC%ED%95%9C%20%EB%B0%A9%EC%8B%9D%EC%9D%80%20%EC%83%81%EB%8B%B9%ED%9E%88%20%EB%B2%88%EA%B1%B0%EB%A1%AD%EA%B3%A0,%EC%8B%A4%ED%96%89%ED%95%A0%20%EC%88%98%20%EC%9E%88%EB%8F%84%EB%A1%9D%20%EB%8F%84%EC%99%80%EC%A4%80%EB%8B%A4.

728x90