티스토리 뷰

기술 면접

Spring Framework and Spring Boot

LuxuryCoding 2021. 10. 1. 11:27
728x90

✅ 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 파일로 간단 배포!

 

 

 

 

'기술 면접' 카테고리의 다른 글

REST API 가이드  (2) 2022.02.07
Nginx  (1) 2021.12.13
[Back-end] Java 질문 정리  (0) 2021.10.12
댓글
최근에 달린 댓글
최근에 올라온 글
Total
Today
Yesterday
«   2025/09   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30