Spring(스프링)이란?
객체 지향 언어가 가진 강력한 특징을 살려내는 Java 기반의 프레임워크로, 좋은 애플리케이션을 개발할 수 있도록 도와준다. 특정 기술에 종속되지 않고(기술 비침투적) 객체를 관리할 수 있는 컨테이너를 제공하는 것이 기본 철학이다.
- 'Spring'이라는 단어는 문맥에 따라 다르게 사용되지만, 최근엔 부트+프레임워크를 모두 포함한 생태계를 일컫는다.
- 스프링 프레임워크(스프링의 핵심)은 다음과 같다.
- 핵심 기술 : 스프링 DI 컨테이너, AOP, 이벤트, 기타
- 웹 기술 : 스프링 MVC, 스프링 WebFlux
- 데이터 접근 기술 : 트랜잭션, JDBC, ORM 지원, XML 지원
- 기술 통합 : 캐시, 이메일, 원격 접근, 스케줄링
- 테스트 : 스프링 기반 테스트 지원
- 언어 : 코틀린, 그루비
Spring Boot(스프링 부트)란?
스프링을 편리하게 사용할 수 있도록 지원하는 툴로, 최근에는 스프링 부트를 기본적으로 사용한다.
- 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성할 수 있게 한다.
- Tomcat과 같은 웹 서버를 내장하여 별도의 웹 서버를 설치하지 않아도 된다.
- 손쉬운 빌드 구성을 위한 starter 종속성을 제공한다. (라이브러리 사용시 의존 라이브러리를 함께 가져옴)
- 스프링과 3rd party(외부) 라이브러리를 자동으로 구성해 준다. (외부 라이브러리 사용시 버전 관련 고민을 없애줌)
- 매트릭, 상태 확인, 외부 구성같은 프로덕션 준비 기능을 제공한다. (모니터링 관련 기능 제공)
- 관례에 의한 간결한 설정을 제공한다. (웬만한 건 다 default 설정에 있고, 필요한 부분만 커스텀하여 사용)
Spring Boot 프로젝트 생성
먼저 스프링부트 프로젝트 설정 사이트에 접속하여 프로젝트 정보를 입력한다.
- Project : Gradle, Maven 선택
- Language : 구현 언어 선택
- Spring Boot : 스프링부트 버전 선택
- Project Metadata : 메타데이터 입력
- Group : 회사명
- Artifact : 프로젝트명
- Name : 프로젝트명 (Artifact와 동일)
- Description : 설명
- Package name : 패키지명(자동 생성)
- Packaging : Jar / War 선택
- Jar(Java Archive) : Java 프로젝트를 압축한 파일로, JRE(Java Runtime Environment)만으로 실행 가능
- War(Web Application Archive) : 웹 애플리케이션 압축 파일 포맷으로, 별도의 웹서버(WEB)나 웹컨테이너(WAS)가 필요. 외장 WAS를 사용하는데, 스프링부트는 WAS 톰캣이 내장되어 있어 외장 WAS를 사용하지 않는 것이 표준 (Jar만으로 편리하게 배포하고 동작 가능)
- Java : Java 버전
- Dependencies : build.gradle에 추가될 의존성 추가
- 웹 애플리케이션을 개발하는 경우 Spring Web, Spring Data JPA, H2 Database, Lombok 등 추가
스프링에서 자주 사용하는 추천(반 필수) 라이브러리 | |
Spring Boot DevTools | Spring 개발 도구 Tools |
Spring Web | 웹 개발 기본 라이브러리 |
Spring Data JPA | 데이터베이스 접근을 위한 라이브러리 |
Spring Security | 사용자 인증 (회원 관리를 위한 라이브러리) |
MySQL Driver | MySQL을 사용하는 경우 필요한 라이브러리 |
OAuth2 Client | 소셜 로그인 구현을 위한 라이브러리 |
Thymeleaf | 프론트 엔드용 템플릿 엔진 (Spring 권장) |
LomBok | Setter, Getter 등 불편함을 덜어주는 코드 간결화 라이브러리 |
Spring Boot 프로젝트 실행
위 사이트에서 모든 정보를 입력했다면, GENERATE를 눌러 프로젝트 압축 파일을 다운로드한다. 다운로드한 파일은 압축을 풀어 원하는 위치에 놓고, 이후 IntelliJ와 같은 IDE에서 해당 프로젝트를 open(import)하면 프로젝트를 열 수 있다.
- IDE(IntelliJ) 실행
- 프로젝트 open(import)
- build.gradle 열기
프로젝트를 실행하면 gradle 빌드가 시작되는데, 버전이 일치하지 않는 경우 다음과 같은 오류가 발생할 수 있다.
Java, Spring 버전과 JDK(SDK) 버전이 달라 발생하는 문제이다. 사용할 Java, Spring 버전에 맞는 JDK를 다운한 뒤 Gradle 설정에서 다운로드한 JDK를 추가해주면 해결되고, 다음과 같이 정상적으로 Gradle 빌드가 완료되는 것을 볼 수 있다.
이후 메인 클래스를 실행해보면, 이처럼 Spring 로고와 함께 웹 서버가 부팅된다.
주소창에 localhost:8080을 입력하면 빌드한 웹 서버로 접속할 수 있다.
Spring Security 라이브러리를 추가했기 때문에 첫 페이지가 로그인으로 나오는데, 초기 비밀번호는 서버 실행시 콘솔에 출력된다.
로그인 후 아래와 같은 페이지가 출력되면 정상.
Spring Boot 프로젝트 Github 연동
생성한 프로젝트를 Github에 연동하는 방법은 다음과 같다.
1. Github Repository를 생성하고, 저장소 주소를 복사한다.
2. IntelliJ 상단의 VCS 탭에서 Git 저장소 생성... 버튼을 클릭한다.
버튼 클릭시 디렉토리 선택창이 출력되는데, 확인 버튼을 눌러주면 된다.
3. 파일명이 다음과 같이 빨간색으로 표시되는지 확인한다.
파일이 스테이징 영역(Staging Area)에 추가되지 않은 것으로, Git 저장소 생성이 완료되었다고 보면 된다.
4. Git 탭에서 원격 관리... 버튼을 클릭한다.
5. 1번에서 복사해둔 저장소 주소를 붙여넣는다.
+ 버튼을 눌러 저장소를 추가할 수 있다. 주소를 넣어준 뒤 확인 버튼을 누른다.
6. 커밋
상단의 Git 탭에서 커밋 버튼을 눌러 프로젝트 파일을 Github에 Commit 한다.
7. 푸시
상단의 Git 탭에서 푸시 버튼을 눌러, 커밋한 파일들을 Github에 푸시한다.
IntelliJ를 사용하는 경우, 설정에서 빌드 도구를 Gradle이 아닌 IntelliJ IDEA로 변경하면 프로젝트 실행 속도를 더 빠르게 할 수 있다. (Gradle을 거치지 않고 IntelliJ에서 바로 실행하여 속도가 조금 빠름)
'⚙ Framework > Spring-스프링' 카테고리의 다른 글
[Spring] JPA Enum Converter로 DB Entity Mapping하기 (0) | 2025.03.25 |
---|---|
[Spring] 운영 환경에서의 로그 모니터링 레벨 구분 (0) | 2025.02.07 |
[E] No matching variant of org.springframework.boot:spring-boot-gradle-plugin:3.1.4 was found. (0) | 2023.10.16 |
[Java] Spring이란? (2) - Spring의 주요 특징 (0) | 2023.08.03 |
[Java] Spring이란? (1) - Spring과 SpringBoot (0) | 2023.08.03 |