원하는 것은 뭐든지

[Spring Boot] 스프링 부트 시작하기 본문

개발/SPRING

[Spring Boot] 스프링 부트 시작하기

댕로그😏 2024. 2. 22. 09:56
반응형

About

스프링부트 프로젝트를 구성하면서 정리하는 차원에서 글을 쓰게 되었습니다.

자주 그리고 잘 사용하고 있는 Spring에 대해 명확히 이해하는 시간이 되길 바라며 글을 시작합니다.

목차

프레임워크

Spring Framework

Spring Boot

본론

프레임워크(Framework)

소프트웨어 개발을 위한 구조와 규칙을 제공하는 도구나 환경입니다. 단어 뜻대로 Frame (틀, 구조)를 제공하는데 그 틀에 개발자가 자주 그리고 잘 사용하는 것들을 모아서 제공하고 개발자는 기능을 추가하고 확장할 수 있습니다. 해서 특정한 종류의 소프트웨어 개발에 특화되어있기 때문에 다양한 프레임워크가 있습니다. (Spring, Django, Angular 등)

Spring Framework

스프링 프레임워크는 자바 기반의 엔터프라이즈 애플리케이션을 개발하기 위한 오픈 소스 프레임워크입니다. 그 유명한 로드 존슨(Load Johnson)이 개발하여 2003년에 처음 출시되었고, 이후로 현재까지 지속적으로 발전하고 있습니다.

Spring은 정말 다양한 기능을 제공해서 아무리 Spring을 이용하여 오래 개발을 하였다고 하더라도 모두 알고 있기는 쉽지 않은 것으로 유명합니다. 그중 주요한 특징들은 다음과 같습니다.

1. 경량 컨테이너

스프링은 컨테이너를 가지고 있는데 이를 통해 라이프사이클을 관리해 주고 의존성 주입(Dependency Injection)이 가능하게 합니다. 이는 개발자가 객체 간의 의존성을 느슨하게 유지하고 유연한 애플리케이션을 구축할 수 있도록 합니다.

2. 의존성 주입 (Dependency Injection, DI)

의존성 주입을 통해 객체간의 의존성을 관리할 수 있습니다. 이를 통해 개발자는 객체 생성 및 의존성 관리를 손쉽게 할 수 있고 코드의 재사용성과 유지보수성을 향상할 수 있습니다.

3. 제어의 역전 (Inversion of Control, IoC)

위에서 언급한 내용들을 보면 주도권이 개발자가 아닌 프레임워크가 가지고 있습니다. 객체의 생성부터 생명주기 관리를 스프링 컨테이너가 관리하고 있습니다. 즉, 제어권이 프레임워크에 넘어가 있기 때문에 제어의 역전이라고 합니다.

해서 스프링 컨테이너와 IoC컨테이너를 같은 말로 사용하기도 합니다.

4. 관점 지향 프로그래밍(?) (Aspect Oriented Programming, AOP)

관심사의 분리(나중에 포스팅)를 위한 기술 중 하나인데요. 메인 로직과 이에 영향을 주는 기능들을 분리하여 모듈화 하는 데 사용됩니다. 여기서 관심사란 프로그램이 수행하는 작업들을 의미하는데 로깅, 보안, 트랜잭션 관리 등 메인 로직은 아니지만 애플리케이션 전반에 걸쳐 반복적으로 사용될 수 있는 부가적인 관심사라고 볼 수 있습니다. AOP는 이를 모듈로 분리하고 메인 로직을 수정하지 않고 추가, 변경할 수 있도록 도와줍니다.

(사실 관점지향프로그래밍이라는 말이 와닿지는 않음..)

 

Spring Boot

그렇다면 스프링 부트는 무엇이냐

스프링 프레임워크를 기반으로 하여 독립적으로 실행 가능한 웹 애플리케이션을 쉽게 개발할 수 있도록 도와주는 프레임워크입니다. 스프링 프레임워크의 기능을 최대한 활용하면서 설정 시의 복잡성을 최소화하여 개발자가 웹 애플리케이션 구축에 집중할 수 있도록 도와줍니다. 스프링 부트의 주요 특징들은 다음과 같습니다.

1. 자동 설정

스프링 프레임워크는 정말 개발자가 편하도록 구성되어 있지만 그럼에도 설정해줘야 하는 부분이 꽤 있습니다. 하지만 스프링 부트는 그 설정을 다 해줍니다! 별다른 설정 없이 바로 서버를 실행시켜 볼 수 있습니다.

2. 내장형 서버

스프링부트는 톰캣, 제티 등의 내장형 서버를 탑재하고 있어서 별도의 서버 설치가 필요 없습니다.

3. 스타터 의존성 제공

다양한 기능을 제공하는 스타터 의존성을 제공합니다. 개발자는 필요한 기술 스택에 맞는 스타터 의존성을 추가해 사용할 수 있습니다. 이는 라이브러리 버전 충돌을 해결할 수 있습니다.

결론

스프링 프레임 워크와 부트의 주요한 특징들에 대해 알아봤습니다.

알고 있던 내용들이지만 역시 개념을 다시 읽을 때마다 다시 읽히는 거 같아요.

다음은  Spring Initializr를 통해 프로젝트를 생성해 보겠습니다.

 

 

 

끝!

 

 
반응형

'개발 > SPRING' 카테고리의 다른 글

[Spring Boot] Spring Initializr로 프로젝트 생성하기  (0) 2024.02.23
ant? maven? gradle?  (0) 2023.03.08
Comments