1. 프로젝트 생성
- 프로젝트 이름 설정
- Language : Java
- Build system은 Gradle로 설정
- Gradle DSL : Groovy
- GroupId : 회사 도메인이나, 자신의 도메인으로 설정
Bulid System : Gradle과 Maven의 차이점은?
빌드 시스템에 있는 그레이들과 메이븐은 소스 코드를 이용해서 실행 가능한 애플리케이션을 생성하는 과정을 자동화하는 프로그램.
이 과정에서 의존성 내려받기, 코드 패키징, 컴파일, 테스트 실행 등이 포함되어 있음.
그레이들의 특징은 다음과 같음.
- 메이븐에 비해 가동성이 좋고 설정이 간단함.
- 자바,코틀린, 그루비 등 다양한 언어를 지원하며, 원하는 대로 빌드 스크립트 작성 가능.
- 빌드와 테스트 속도가 메이븐에 비해 더 빠름.
2. Gradle 세팅
gradle의 역할: 소스 코드를 이용해서 실행 가능한 애플리케이션을 생성하는 과정을 자동화하는 프로그램
plugins {
id 'java'
id 'org.springframework.boot' version '3.0.2'
id 'io.spring.dependency-management' version '1.1.0'
}
group = 'me.jhzlo'
version = '1.0-SNAPSHOT'
sourceCompatibility = '17'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
test {
useJUnitPlatform()
}
- plugins
- 스프링 부트 플러그인 org.springframework.boot 추가
- 스프링의 의존성을 자동으로 관리하는 spring.dependency-management 추가
- group
- 그룹 이름
- 버전
- 자바 소스를 컴파일 할 때 사용할 자바 버전
- repositories : 의존성을 받을 저장소
- 기본값인 mavenCentral로 설정
- dependencies : 프로젝트를 개발하며 필요한 기능의 의존성을 입력
- 웹 관련 기능을 제공하는 spring-boot-starter-web 추가
- 테스트 기능을 제공하는 spring-boot-starter-test 추가
* 스프링 부트 스타터 살펴보기
스타터 | 설명 |
spring-boot-starter-web | Spring MVC를 사용하여 RESTful 웹 서비스를 개발할 때 필요한 의존성 모음 |
spring-boot-starter-test | 스프링 애플리케이션을 테스트하기 위해 필요한 의존성 모음 |
spring-boot-starter-validation | 유효성 검사를 위해 필요한 의존성 모음 |
spring-boot-starter-actuator | 모니터링을 위해 애플리케이션에서 제공하는 다양한 정보를 제공하기 쉽게 하는 의존성 |
spring-boot-starter-data-jpa | ORM을 사용하기 위한 인터페이스 모음인 JPA를 더 쉽게 사용하기 위한 의존성 모음 |
3. 메인 클래스 생성
1. 다음과 같은 경로로 me.jhzlo 아래 경로에 springbootdeveloper 패키지 생성
패키지 이름은 <그룹_이름>.<프로젝트_이름> 형식
2. 패키지 아래 경로에 springBootDeveloperApplication 클래스 생성 >> 메인 클래스
클래스 이름은 <프로젝트_이름><Application> 형식
* 모든 프로젝트에는 메인 클래스가 있어야 한다.
3. 메인 클래스 코드
package me.jhzlo.springbootdeveloper;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringBootDeveloperApplication {
public static void main(String[] args){
SpringApplication.run(SpringBootDeveloperApplication.class, args);
}
}
- 이 클래스는 자바의 main() 메서드와 같은 역할은 한다 -> 스프링 부트가 시작
- @SpringBootApplication 애너테이션 : 스프링 부트 사용에 필요한 기본 설정
- SpringApplication.run() 메서드는 애플리케이션을 실행
- 첫 번째 인수 : 스프링 부트 3 애플리케이션의 메인 클래스로 사용할 클래스
- 두 번째 인수 : 커맨드 라인의 인수들을 전달
@SpringBootApplication
<SpringBootApplication 애너테이션 살펴보기>
@springBootConfiguration, @EnableAutoConfiguration, @ComponentScan
이 세 가지 애너테이션이 스프링 부트의 특징을 나타내어 스프링 부트를 이해하는 데 도움이 된다.
@SpringBootConfiguration
스프링 부트 관련 설정을 나타내는 애너테이션.
@Configuration을 상속해서 만든 애너테이션.
@EnableAutoConfiguration
스프링 부트에서 자동 구성을 활성화하는 애너테이션.
스프링 부트 서버가 실행될 때 스프링 부트 메타 파일을 읽고 정의된 설정들을 자동으로 구성하는 역할을 수행한다.
자동구성이란?
스프링 부트에서는 애플리케이션이 최소한의 설정만으로도 실행되게 여러 부분을 자동으로 구성한다.
(스프링 부트는 서버를 시작할 때 구성 파일을 읽어와서 설정함, 이를 자동 설정이라고 한다.)
자동 설정은 META-INF에 있는 spring.factories 파일에 담겨 있다.
@ComponentScan
사용자가 등록한 빈을 읽고 등록하는 애너테이션.
이 애너테이션은 @Component라는 애너테이션을 가진 클래스들을 찾아 빈으로 등록하는 역할을 한다.
@Component를 감싸는 애너테이션들도 있음 -> 용도에 따라 다른 애너테이션 사용
애너테이션명 | 설명 |
@Configuration | 설정 파일 등록 |
@Repository | ORM 매핑 |
@Controller, @RestController | 라우터 |
@Service | 비즈니스 로직 |
4. "Hello, World!" 출력하기
1. 다음과 같은 경로에 TestController 클래스 추가
2. TestController.java 코드 작성
package me.jhzlo.springbootdeveloper;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
@GetMapping("/test")
public String test(){
return "Hello, world!";
}
}
@RestController
라우터 역할을 하는 애너테이션
라우터란? HTTP 요청과 메서드를 연결하는 장치
이 애너테이션이 있어야 클라이언트의 요청에 맞는 메서드를 실행할 수 있음
/test GET 요청이 오면 test() 메서드를 실행할 수 있도록 하는 코드이다.
@RestController를 @Component처럼 취급할 수 있는 이유?
@RestController는 @Controller를 감싸고 있고,
@Component는 @Compnent를 가지고 있다.
3. 메인 클래스 실행
public class 옆에 있는 실행 아이콘을 누르면 서버가 정상적으로 실행된다.
이때, 8080 포트가 기본으로 세팅되어 있으므로, 8080포트가 비어있어야 한다.
4. localhost에서 확인하기
http://127.0.0.1:8080/test로 접속하게 되면
다음과 같이 잘 출력되는 것을 확인할 수 있다.
'JAVA > SpringBoot 3' 카테고리의 다른 글
[스프링 부트 3] 블로그 만들기 - 1 (블로그 글 작성 API 구현) (4) | 2024.08.07 |
---|---|
[스프링 부트 3] ORM, JPA, 하이버네이트 (0) | 2024.07.30 |
[스프링 부트 3] 테스트 코드란? / 테스트 코드 작성하기 (0) | 2024.07.29 |
[스프링 부트 3] 구조 이해하기 (프레젠테이션, 비즈니스, 퍼시스턴스 계층) (0) | 2024.07.25 |
[스프링 부트] 기본 개념 (IoC, DI, 빈, 컨테이너, AOP, PSA) (2) | 2024.07.22 |