본문 바로가기

SSAFY TechTalk Study

Day19 : Spring Framework와 Spring Boot

💫작성자 및 원본 글💫
jhj960918 (https://github.com/ssafy-tech-concert/ssafy-tech-concert/blob/master/Back-end/sping-springboot.md)

 

 

목차

  1. Framework?
  2. Spring Framework
  3. Spring Boot



 

✅ Framework?


프레임워크는 어떠한 목적을 달성하기 위해 복잡하게 얽혀있는 문제를 해결하기 위한 구조며, 소프트웨어 개발에 있어 하나의 뼈대 역할을 한다. (나무 위키)

사용 이유?


1. 실력이 부족한 진형준도 반쯤 완성한 상태에서 필요한 부분을 조립하는 형태의 개발이 가능하다.
2. 어느 정도 품질면에서 성과가 있는 결과물을 얻을수 있다.
3. 개발 시간을 단축할 수 있다.

Spring(Java의 웹 프레임워크), Django(Python의 웹 프레임워크), Flask(Python의 마이크로 웹 프레임워크), Ruby on rails(Ruby의 웹 프레임워크), .NET Framework, Node.js(Express.js 프레임워크) 등

 

 

Spring의 본질

  • 자바의 가장 큰 특징은 객체 지향 언어
  • 스프링은 자바의 가장 큰 특징을 잘 살려 좋은 객체 지향 프로그래밍을 개발할 수 있도록 도와주는 프레임워크

 

 

✅ Spring Framework

자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 엔터프라이즈급 애플리케이션을 개발하기 위한 모든 기능을 종합적으로 제공하는 경량화된 솔루션입니다.

장점

  • POJO(Plan Old Java Object)기반의 구성
    • java코드를 이용해서 객체를 구성하는 방식을 그대로 스프링에서 사용할 수 있다는 의미.
    • POJO : Java EE 등의 중량 프레임워크들을 사용하게 되면서 해당 프레임워크에 종속도니 "무거운" 객체를 만들게 된 것에 반발해서 사용하게 된 용어
  • IoC(Invertion of Control: 제어 역행)
    • 컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출한다.
  • Di(Dependency Injection: 의존성 주입)
    • 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜준다.
  • AOP(Aspect-Oriented Programming: 관점지향 프로그래밍)
    • 프로그램의 전체 로직을 크게 비지니스 로직과 공통로직(Aspect)을 분리하는 프로그래밍 기법
  • 높은 확장성
    • 스프링에서 사용되는 라이브러리를 별도로 분리하기도 용이하다.

 

 

🌸 Spring Framework 사용 이유?

 

  • 한국의 '전자표준 프레임워크'
  • 정형화 되어 있기 때문에 일정수준의 품질을 기대 할 수 있습니다.
  • 개발 후 유지보수 및 기능의 확장성에서도 품질을 보장합니다.

 

 

🌸 Spring Framework의 단점

 

  • 내부에서 많은 기능을 가졌기 때문에 상당히 무겁습니다.
  • 설정이 반이다.....
  • 버전을 하나하나 명시 해준다던지....

Spring Framework는 기능이 많은 만큼 환경설정이 복잡하다. 이것을 보완해주기 위해 Spring Boot가 나왔다.

❗❗ 즉, 스프링 프레임워크를 쉽게 사용하려고 스프링 부트가 나왔다 ❗❗



 
 

✅ Spring Boot

Spring Boot 사용 이유?

  • Auto Configuration 자동 실행
    • 개발에 필요한 라이브러리들을 추가하면 Spring Boot 가 이 라이브러리들을 인지해서 관련된 스프링 설정을 자동으로 처리해주기 때문에 개발자들은 복잡한 설정을 하지 않고도 개발이 가능하다.
  • 내장 서버 탑재
    • Tomcat 서버를 내장하고 있기 때문에 단지 main() 메소드를 가진 클래스를 실행하는 방식으로 서버를 구동하기 때문에 실행결과를 빠르게 확인할 수 있다.
  • 쉬운 의존성 관리
    • Spring Boot Starter : 스프링 부트는 버전 관리를 스프링 부트에 의해서 관리
  • jar 를 통한 손쉬운 배포
    • 내장 서블릿 컨테이너 덕분에 jar 파일로 간단 배포!