더 쉽게, 빠르게 Spring을 사용
정의
Spring Boot웹 프로그램(웹 애플리케이션)을 쉽고 빠르게 만들 수 있도록 도와주는 자바의 웹 프레임워크이다.
Spring 프레임워크에 Tomcat이라는 서버를 내장하고 여러 편의 기능들을 추가
사용 이유
Spring Boot튼튼한 웹 프레임워크이다
개발자가 웹 프로그램을 만들 때 어렵게 느끼는 기능 중 하나는 바로 보안 기능이다. 이 세상에는 여러 가지 방법으로 웹 사이트를 괴롭히는 사람들이 있다. 이런 공격에 개발자 홀로 신속하게 대응하기는 무척 어려운 일이다. 하지만 걱정할 필요는 없다. 스프링 부트가 이런 보안 공격을 기본으로 아주 잘 막아 주기 때문이다.
여러 기능
한마디로 스프링 부트에는 웹 프로그램을 개발하는 데 필요한 도구와 기능이 대부분 준비되어 있다. 스프링 부트를 공부할 여러분에게 ’이미 만들어져 있는 기능을 새로 만드느라 애써 고생하지 말라’는 이야기를 꼭 해주고 싶다.
WAS가 필요없다
WAS의 종류는 매우 다양하며 설정 방식도 제각각이어서 WAS만으로도 공부해야 할 내용도 상당하다. 하지만 스프링 부트에는 톰캣 서버가 내장되어 있고 설정도 자동 적용되기 때문에 여러분은 WAS에 대해서 전혀 신경 쓸 필요가 없다. 심지어 배포되는 jar 파일에도 톰캣 서버가 내장되어 실행되므로 서로 다른 WAS들로 인해 발생되는 문제들도 사라진다.
스프링 부트(Spring Boot) 는 스프링 부트는 스프링(Spring) 프레임워크에 톰캣(Tomcat)이라는 서버를 내장하고 여러 편의 기능들을 추가하여 개발자들 사이에서 꾸준히 인기를 누리고 있다. 톰캣은 클라이언트의 요청을 해석하여 그에 맞는 자바 프로그램을 실행한 후 그 결과를 응답해 주는 웹 애플리케이션 서버이다.
웹 프레임워크란?
웹 프레임워크라는 단어를 처음 듣는 사람을 위해 잠시 웹 프레임워크에 대해 먼저 알아보자. 웹 프로그램을 만들어 본 경험이 있다면 웹 프로그램을 완성하기 위해 얼마나 많은 기능을 생성해야 하는지 잘 알 것이다.

예를 들어 쿠키나 세션 처리, 로그인/로그아웃 처리, 권한 처리, 데이터베이스 처리 등 웹 프로그램을 완성하기 위해 만들어야 할 기능이 정말 산더미처럼 많다. 하지만 웹 프레임워크를 사용하면 이런 기능들을 여러분이 일일이 만들 필요가 없다. 왜냐하면 웹 프레임워크에는 그런 기능들이 이미 만들어져 있기 때문이다. 그저 웹 프레임워크에 있는 기능을 익혀서 사용하기만 하면 된다. 쉽게 말해 웹 프레임워크는 웹 프로그램을 만들기 위한 스타터 키트라고 생각하면 된다. 그리고 자바로 만든 웹 프레임워크 중 하나가 바로 스프링 부트이다.
스프링 부트의 몇 가지 규칙만 익히면 기존에 자바로 웹 프로그램을 작성하는 방식보다 빠르게 웹 프로그램을 만들 수 있다. 예를 들어, 크롬이나 사파리와 같은 웹 브라우저에 ‘Hello World’를 출력하려면 다음과 같은 클래스 하나만 작성하면 된다:
@Controller
public class HelloController {
@GetMapping("/")
@ResponseBody
public String hello() {
return "Hello World";
}
}
스프링 부트를 배워야 하는 이유
스프링 부트는 웹 프로그램을 쉽고 빠르게 만들어 준다는 것 외에도 많은 장점이 있다. 어떤 장점이 있어 개발자들이 배우고 싶어 하고 자주 사용하는 것일까?
스프링 부트는 튼튼한 웹 프레임워크이다

그만큼 스프링 부트는 튼튼한 웹 프레임워크다. 예를 들어 SQL 인젝션, XSS(cross-site scripting), CSRF(Cross-Site Request Forgery), 클릭재킹(clickjacking)과 같은 보안 공격을 막아 준다. 즉, 스프링 부트를 사용하면 이런 보안 공격을 막아 주는 코드를 여러분이 짤 필요가 없다는 뜻이다!
점프 투 스프링부트웹 사이트로 들어오는 보안 공격은 다양하다
앞서 언급한 보안 공격의 종류를 간단히 살펴보고 넘어가자. 이러한 보안 공격으로 웹 사이트의 방문자나 사용자가 직간접적으로 피해를 입으므로 미리 알아 두는 것이 좋다.
- SQL 인젝션은 악의적인 SQL을 주입하여 공격하는 방법이다.
- XSS는 자바스크립트를 삽입해 공격하는 방법이다.
- CSRF는 위조된 요청을 보내는 공격 방법이다.
- 클릭재킹은 사용자가 의도하지 않은 클릭을 유도하는 공격 방법이다.
스프링 부트에는 여러 기능이 준비되어 있다
스프링 부트는 2012년에 등장하여 10년 이상의 세월을 감내한 ‘베테랑’ 웹 프레임워크이다. 그동안 정말 무수히 많은 기능이 추가되고 또 다듬어졌다. 혹시 로그인 기능을 원하는가? 페이징 기능을 원하는가? 이미 스프링 부트에 있다. 이미 있을 뿐 아니라 너무나도 잘 만들어져 있다!
로그인 기능은 네이버나 구글 로그인처럼 사용자를 인증하는 기능을 말하고, 페이징 기능은 한 페이지에 데이터가 많으면 페이지별로 나누어 조회할 수 있게 하는 기능을 말한다.
한마디로 스프링 부트에는 웹 프로그램을 개발하는 데 필요한 도구와 기능이 대부분 준비되어 있다. 스프링 부트를 공부할 여러분에게 ’이미 만들어져 있는 기능을 새로 만드느라 애써 고생하지 말라’는 이야기를 꼭 해주고 싶다.
스프링 부트는 WAS가 필요없다
스프링 부트 대신 스프링만 사용하여 웹 애플리케이션을 개발한다면 실행할 수 있는 톰캣과 같은 WAS(Web Application Server)가 필요하다. WAS의 종류는 매우 다양하며 설정 방식도 제각각이어서 WAS만으로도 공부해야 할 내용도 상당하다. 하지만 스프링 부트에는 톰캣 서버가 내장되어 있고 설정도 자동 적용되기 때문에 여러분은 WAS에 대해서 전혀 신경 쓸 필요가 없다. 심지어 배포되는 jar 파일에도 톰캣 서버가 내장되어 실행되므로 서로 다른 WAS들로 인해 발생되는 문제들도 사라진다.
- 스프링 부트로 작성하더라도 톰캣 대신 다른 WAS를 사용할 수 있다.
- jar 파일은 자바 클래스들을 담고 있는 압축 파일이다.
점프 투 스프링부트WAS란?
WAS는 웹 애플리케이션과 서버 환경을 연결하는 중간 역할을 하는 소프트웨어 플랫폼이다. 예를 들어 사용자가 웹 브라우저로 서버에 요청을 보내면 WAS는 사용자의 요청을 해석하여 그에 맞는 서버 프로그램을 구동한 후 그 결과를 사용자에게 보여준다. WAS의 종류로는 아파치 톰캣, 오라클 웹 로직(Weblogic), IBM 웹스피어(WebSphere), 제이보스(JBoss, 와일드플라이WildFly), 제우스(Jeus) 등이 있다.
스프링 부트는 설정이 쉽다
스프링 부트가 등장하기 전 개발자들은 스프링을 사용하여 웹 애플리케이션을 개발했다. 스프링의 복잡한 설정 때문에 개발자들은 많은 어려움을 겪었다. 심지어 한번 설정한 기능들이 스프링의 버전업으로 변경되거나 없어지는 일도 비일비재했다. 하지만 스프링 부트는 스프링의 복잡한 설정을 자동화·단순화하여 누구나 쉽게 스프링을 사용할 수 있도록 한 프레임워크이다.
필자는 스프링으로 웹 애플리케이션을 만들 때 파이썬으로 작성된 장고(Django), 루비로 작성된 레일즈(Rails)와 같은 웹 프레임워크의 간결함을 많이 부러워했는데 스프링 부트의 등장과 발전으로 이제는 더 이상 부러워할 이유가 없을 듯하다.
스프링 부트는 재미있다
스프링 부트로 웹 프로그램을 만드는 것이 게임을 하는 것보다 재밌다고 하면 믿겠는가? 약간 과장된 이야기이긴 하지만 가끔 무언가에 홀린 듯이 코딩을 하고 있는 필자 자신을 발견하곤 하는데, 그때가 바로 웹 프로그램을 만들고 있을 때였다. 레고를 조립하는 것처럼 웹 애플리케이션이 조금씩 완성되어 가는 과정을 즐기게 된다. 정말이니 의심하지 말고 지금 당장 스프링 부트로 웹 프로그래밍을 시작해 보자!
- 정의: 스프링은 모듈화된 애플리케이션 개발을 위한 핵심 프레임워크로, 다양한 구성 요소를 조합하여 애플리케이션을 설계할 수 있도록 해줍니다.
- 주요 특징:
- POJO 기반 개발: 일반 Java 객체(POJO)를 이용해 객체 지향적인 개발을 지원.
- 유연한 구성: XML, Java Config, Annotation 등을 이용해 설정 가능.
- 모듈화: DI(Dependency Injection), AOP(Aspect-Oriented Programming), 데이터 액세스, 트랜잭션 관리 등 다양한 모듈 제공.
- 설정 필요: 초기 설정 작업이 많고, 개발자가 직접 많은 구성을 해야 함.
- 용도:
- 다양한 유형의 애플리케이션(웹, 배치, 데스크톱 등) 개발.
- 유연성이 필요한 프로젝트에서 활용.