스프링 프레임워크(Spring Framework)은 java 기반의 애플리케이션 개발 프레임워크로, 간단히 스프링(Spring)이라고도 부른다.
스프링은 다양하고 편리한 기능들을 제공해 서버 개발에서 많이 쓰인다.
나 역시 배우는 입장이기 때문에 Spring의 모든 기능을 꿰고 있지 않고, 어떤 점에서 장점을 가지고 있는지 명확하게 설명하기에는 아직 지식이 부족하다.
다만 한가지 느끼는 점은 내용은 쉽지 않지만 차근차근 공부하다 보면 나름 이해가 간다는 것이다.
다른 프레임워크나 언어로 만들어진 프로그램들은 공부를 해도 도통 무슨 내용인지 이해하기 힘든 부분들이 많았는데,
스프링은 공부를 하다보면 이게 어떻게 돌아가는지 어느정도 감을 잡을 수 있었다.
이런 점은 개인 성향일수도 있지만, 많은 개발자들 사이에서 나오는 이야기이기도 하다.
그만큼 스프링이 나름 개발자 친화적이라는 의미라고 생각한다. (사실 입문자 단계라 아직 매운 맛을 못 본 걸수도 있다)
따라서 나는 스프링을 이용한 서버 애플리케이션 개발을 시작으로 서버 개발자로서의 기반을 다지려 한다.
이 카테고리(Spring 완전정복 로드맵)에 속한 포스트는
inflearn 김영한 선생님의 [Spring 완전정복 로드맵]을 따라 강의를 들으며 작성한 내용이다.
서론이 길었다. 카테고리의 첫 포스트여서 내가 공부하고자 하는 의미를 좀 더 잘 적어두고 싶었다.
목표가 바로 서야 공부하다가 방향을 잃지 않는다.
프로젝트 생성
사전 준비물:
Java 11
InteliJ IDE (나는 무료버전인 Community Edition을 사용했다)
스프링 부트 스타터 사이트(Spring initializer)로 이동한다.
https://start.spring.io/
start.spring.io는 스프링 부트 프로젝트를 생성해주는 사이트다.
만들고 싶은 프로젝트를 커스터마이징한 후 좌측 하단의 [Generate] 버튼을 누르면 설정한 대로 프로젝트 압축 파일을 만들어준다.
프로젝트 설정
Project - [Gradle-Groovy] 선택
Gradle, Maven 등은 개발에 필요한 라이브러리와 빌드 등을 관리해주는 툴이다. Gradle을 많이 쓰는 추세.
Language - [Java] 선택
Spring Boot - [2.7.9] 선택
- 포스트 날짜 기준으로 3.x버전이 나와있으나, 강의는 2.3.1버전 기준이어서 2.x로 선택하였다.
- 버전 뒤에 SNAPSHOT이나 M1 등이 붙어있는 것은 정식 릴리즈 버전이 아니다. 숫자만 있는 버전을 선택할 것.
Group - [hdxian] 으로 작성.
- 개발사의 이름 등을 따서 다른 애플리케이션과 구분하는 일종의 도메인 명. 실습이므로 그냥 hdxian라 작성했다.
Artifact - [hdxian-spring]으로 작성
- 일종의 프로젝트명. 강의에서 깊게 설명하지 않았다.
- 강의에서는 hello-spring으로 만들었는데, 같은 이름으로 전에 한번 만든 적 있어서 hdxian-spring으로 바꿨다.
나머지 Metadata는 건드리지 않았다.
Packiging - [Jar] 선택
Java - [11] 선택. (사용할 자바가 11버전이므로)
dependencies
프로젝트에서 함께 사용할 외부 라이브러리를 지정한다.
우측 상단의 Add를 이용해서 추가한다.
[Thymeleaf] 템플릿 엔진 선택 - html 등의 템플릿에 사용.
[Spring Web] 선택 - 웹 애플리케이션을 만들기 위해 사용.
설정을 마치면 좌측 하단의 [Generate] 선택.
그러면 프로젝트 이름으로 zip파일이 다운로드된다.
zip파일을 적당한 위치에서 압축 해제한다. 나는 관리하기 쉽게 보통 C:/Study 혹은 C:/Dev 등에 저장한다.
압축을 풀면 InteliJ를 실행한다.
[open] - 압축 해제한 파일의 [build.gradle] 선택 - [open as project] 선택
프로젝트를 열면 라이브러리 다운로드 등 초기 설정을 하느라 시간이 조금 걸릴 수 있다.
프로젝트를 생성하면 이런 식으로 창이 뜬다.
[main] 폴더 - 실제 패키지와 소스 파일 등이 들어있다.
[main]-[resource] 폴더 - java 코드를 제외한 html 등의 각종 파일이 저장된다.
[test] 폴더 - 테스트 코드를 저장한다.
개발한 애플리케이션에 대한 테스트 코드는 test 폴더에서 별도로 관리하는 것이 일반적이다.
build.gradle 파일
gradle 설정 파일이다.
지금 단계에서는 각종 버전 정보와 dependencies가 저장돼 있다는 점만 알면 충분하다.
dependencies 부분을 보면 아까 start.spring.io에서 추가한 thymeleaf, spring-web이 추가되어있는 것을 확인할 수 있다.
repositories는 dependencies의 내용을 다운받아오는 경로다.
[main] - [java] - [hdxian.hdxianspring] - HdxianSpringApplication.java를 열면 java 클래스가 하나 생성되어 있는 것을 볼 수 있다.
이 클래스에는 main 메서드가 정의되어 있고, main 메서드를 실행하면 애플리케이션이 실행된다.
애플리케이션을 실행하기 전에, 좌측 상단 [File] - [Settings] - [Build, Execution, ...] - [Gradle]로 들어가서
[Build and run using]과 [run tests using]을 [Gradle]에서 [IntelliJ IDEA]로 변경한다.
Gradle로 설정되어 있으면 속도도 느리고 실행 화면이 강의 내용과 조금 달라 헷갈릴 수 있으니 IntelliJ IDEA로 바꾼다.
[Apply] - [OK]로 설정을 완료한 후 main 메서드로 돌아가 실행하면 애플리케이션이 구동된다.
아래쪽에 이런 식으로 Tomcat started on port 8080...과 started HdxianSpringApp... 하고 뜨면 잘 실행된 것이다.
안된다면 설치나 설정 과정에서 문제가 생긴 것이다.
애플리케이션이 시작된 채로 브라우저 주소창에 localhost:8080이라 입력하면 다음과 같은 에러 페이지가 뜬다.
프로젝트를 생성만 하고 웹 페이지 등을 만든 적이 없으니 당연히 에러가 뜬다.
다만 애플리케이션이 제대로 작동해야 이 페이지가 뜬다.
근데 저런 페이지가 뜨지 않고
이딴 페이지가 뜨면 애플리케이션이 작동하지 않은 것이다.
아마 이걸 확인하기 전에 메인 메서드를 실행할때 IntelliJ 아래쪽 창에서 빨간 글씨로 막 오류 메시지가 뜰 것이다.
애플리케이션을 중지하려면 IntelliJ 아래쪽 창에서 빨간 네모(정지 버튼) 버튼을 누르면 된다.
+) 간혹 프로젝트 자바 SDK 버전이 IntelliJ에서 자체 제공하는 자바 버전으로 세팅되어 있는 경우가 있다.
메뉴 [File] - [Project Structure] - [Project] - [SDK] 항목을 확인해보길 바란다.
이 버전이 다르면 실습대로 실행되지 않을 수 있다.
'[inflearn] 스프링 입문' 카테고리의 다른 글
스프링 입문) 6. 회원 관리 예제 - 백엔드 개발(1) (0) | 2023.04.02 |
---|---|
스프링 입문) 5. 스프링 웹 개발 기초 개념 (0) | 2023.03.27 |
스프링 입문) 4. 빌드 및 실행 (0) | 2023.03.23 |
스프링 입문) 3. View 환경설정 (0) | 2023.03.21 |
스프링 입문) 2. 라이브러리 살펴보기 (0) | 2023.03.20 |