본문 바로가기
  • 시 쓰는 개발자
Spring

SpringBoot 개발준비 (참고용)

by poetDeveloper 2023. 9. 5.

본 포스팅은 "점프 투 스프링부트"(박응용) 을 공부하면서 작성해놓은 글 입니다.

 

STS

sts는 spring 전용 tool 정도로 생각하면 될 거 같은데, 이클립스나 인텔리제이같은 에디터이지만, spring 전용이기 때문에 start.spring.io가 자동으로 연동되는 등의 편리함이 있다. 하지만 우리는 인텔리제이 프로페셔널을 대학생용으로 사용 가능하기 때문에 굳이 안써도 될듯.

 

SpringBoot 맛보기

@Controller
HelloController 클래스가 컨트롤러의 기능을 수행한다는 의미이다. 이 애너테이션이 있어야 스프링부트 프레임워크가 컨트롤러로 인식한다.

@GetMapping("/hello")
http://localhost:8080/hello URL 요청이 발생하면 hello 메서드가 실행됨을 의미한다. 즉, /hello URL과 hello 메서드를 매핑하는 역할을 한다. 다만, URL명과 메서드명이 동일할 필요는 없다. 즉 /hello URL일 때 메서드명을 hello가 아닌 hello2와 같이 해도 상관없다.

@ResponseBody
hello 메서드의 응답 결과가 문자열 그 자체임을 나타낸다. hello 메서드는 "Hello World" 라는 문자열을 리턴하므로 출력으로 "Hello World" 문자열이 나갈 것이다.

 

Spring Boot Devtools

bulid.gradle에 developmentOnly 'org.springframework.boot:spring-boot-devtools' 를 추가해주면 코드 수정시 자동으로 빌드를 다시 해주기 때문에 변경사항을 확인하려고 매번 재실행하는 수고를 조금 덜 수 있다. 이분이 매우 정리를 잘 해주셔서 여기를 참고하기. 그리고 크롬에서 livereload라는 확장프로그램을 설치해줘야하는 듯 하다.

 

build.gradle의 configuration 해석

1) developmentOnly
Gradle의 developmentOnly는 개발환경에만 적용되는 설정이다. 즉, 운영환경에 배포되는 jar, war 파일에는 developmentOnly로 설치된 라이브러리는 제외된다.

2) compileOnly
build.gradle 파일의 compileOnly는 해당 라이브러리가 컴파일 단계에서만 필요한 경우에 사용한다.

3) annotationProcessor
컴파일 단계에서 애너테이션을 분석하고 처리하기 위해 사용한다.

4) implementation
애플리케이션의 주요 기능을 구현하는 데 사용되는 라이브러리와 종속성을 포함합니다.

5) testImplementation
테스트 코드에 필요한 라이브러리와 종속성을 포함합니다.

6) compile
이전 버전의 Gradle에서 사용되었으며, 현재는 implementation 또는 api 구성으로 대체됩니다.

7) runtime
런타임에 필요한 라이브러리와 종속성을 포함합니다.

8) provided
컴파일 및 테스트 시에만 필요한 라이브러리와 종속성을 포함합니다.

9) testCompile
테스트 코드의 컴파일에 필요한 라이브러리와 종속성을 포함합니다.

10) testRuntime
테스트 코드의 런타임에 필요한 라이브러리와 종속성을 포함합니다.

 

Lombok

롬복(lombok)은 자바 클래스에 Getter, Setter, 생성자 등을 자동으로 만들어 주는 도구이다. 롬복을 사용하면 데이터를 처리하기 위한 entity 클래스나 DTO(data transfer object) 클래스등을 사용해야 할 때 클래스의 속성들에 대한 Getter, Setter를 직접 만들지 않아도 돼서 좀 더 깔끔한 소스코드를 만들수 있다.
클래스명 바로 위에 @Getter, @Setter라는 애너테이션을 적용하면 Getter, Setter 메서드를 추가하지 않아도 변수들에 대한 setOOO과 getOOO 메서드를 사용할 수 있게 되었다.

 

RequiredArgsConstructor

사용하는 변수들에 final을 적용하고 @RequiredArgsConstructor을 적용하면 해당 속성을 필요로하는 생성자가 롬복에 의해 자동으로 생성된다. (※ final이 없는 속성은 생성자에 포함되지 않는다.)

 

참고사항
1) spring boot 3.0부터는 java 17버전 이상만 가능하므로, 사용하려면 java 버전을 업데이트 해줘야함.