웹 프레임워크란?
웹 프로그램을 만들기 위한 스타터 키트로 쿠키나 세션 처리, 로그인/로그아웃 처리, 권한 처리, 데이터베이스 처리 등 웹 프로그램을 위해 만들어야 할 기능들을 이미 만들어 놓고 제공 해준다.
애플리케이션 개발에 있어서 비즈니스 로직이 아닌 기능들을 제공해주기 때문에 개발시 비즈니스 로직에 집중하도록 도와준다.
비즈니스 로직
애플리케이션에서 필수적 핵심적 역할을 하는 코드인 비지니스 로직과 나머지 로직으로 나눌 수 있다. 아마존 웹 서비스를 개발한다고 하면 주문, 결제, 배송 같은 핵심적인 업무들이 비지니스 로직이다. 그 외 사용자 요청 받기, 데이터베이스 저장 및 조회 같은 필수지만 핵심적이지 않는 로직들이 있다.
라이브러리와의 차이점
프레임워크는 내가 작성한 코드를 호출한다. 애플리케이션 전체 실행 흐름을 좌우하기 때문에 특정 프레임워크에 맞춰서 개발되면 다른 프레임워크로 바꾸기 어렵다.
라이브러리는 코드를 작성하면서 필요시에만 호출한다. 라이브러리는 작성한 코드에서 부분적으로 사용되기 때문에 다른 라이브러리로의 변경이 비교적 간단하다.
스프링 프레임워크
핵심 키워드
- 의존성 주입(DI, Dependency Injection)
- 제어의 역전(IOC, Inversion Of control)
- 관전지향 프로그램(AOP, Aspect-Oriented Programming)
스프링부트란?
자바의 웹 프레임워크로 '스프링프레임워크 + 내장 톰캣 서버 + 여러 편의 기능 추가'를 포함하고 있다.
2012년 등장하여 10년동안 많은 기능이 추가되고 다듬어졌다. 로그인, 페이징 같은 웹개발을 위한 도구와 기능이 대부분 준비되어 있다.
SQL 인젝션, XSS(cross-site scripting), CSRF(cross-site request forgery), 클릭재킹(clickjacking)과 같은 보안 공격을 기본으로 막아주기 때문에 보안 공격에 대한 코드를 직접 짤 필요가 없는 튼튼한 프레임워크다.
웹 애플리케이션을 실행 할 수 있는 WAS(Web Application Server) 중 하나인 Tomcat Server가 내장되어 있고 설정도 자동으로 적용된다. 또한 배포되는 jar 파일에도 톰캣서버가 내장되어 실행되므로 서로 다른 WAS들로 인해 발생되는 문제들이 사라진다. 톰캣 대신 다른 WAS도 사용 가능하다.
스프링은 상당히 복잡한 설정을 해야하고, 한번 설정한 기능들이 스프링 버전업으로 인해 변경되고 없어지는 경우도 비일비재 하다. 그에 비해 스프링부트는 오토 컨피규레이션 기능이 있어 일반적으로 많이 사용하는 설정을 자동으로 저장 할 수 있고, 스프링 이니셜라이저를 통해 복잡한 설정을 자동화하고 단순화 하였다.
'프레임워크 > Spring' 카테고리의 다른 글
[SpringBoot] 스프링 이니셜라이저(spring initializr) (0) | 2025.01.02 |
---|---|
[SpringBoot] SpringBoot Project 구조 (0) | 2022.04.19 |