간단한 스프링 프로젝트 개발환경을 잡는 과정에서 필요했던 부분들과 참고하면 좋은 항목들을 10가지 선정하여 공유드립니다.
스프링부트 프로젝트 개발환경을 잡으며 정리한 내용공유 (개념, 팁, 공부법)
스프링부트로 개발환경을 잡으면서 필요해서 찾아보고 정리한 내용들 중에 가볍게라도 공유할만한 내용들을 10가지 선정하여 정리해보았습니다. 또 사실 직접적으로 관련이 없더라도 인텔리제이 환경에서 개발하면서 팁들이나 스프링 공식 홈페이지를 이용해 공부할 수 있는 페이지를 공유드립니다. 가볍게 볼 수 있도록 구성했으니 편하게 참고해주시면 될 것 같습니다.
1. build.gradle
스프링 부트를 사용하면 아래 플러그인을 사용하게 된다.
- dependency-management 플러그인 : 스프링부트 의존성 라이브러리를 버전 일괄 관리
- springframework.boot 플러그인 : 스프링부트 프로젝트 빌드를 위한 설정추가
습관적으로 넣게되는 플러그인들이지만 어떤 기능을 하는지 확인해보았다. dependency-management는 스프링 프로젝트에서 의존성 라이브러리를 받아올때 버전을 하나하나 명시하지 않아도 되게끔 버전을 알아서 잡아주는 플러그인이다. 이로 인해 의존성 라이브러리끼리 버전이 호환되지 않는 문제점을 미리 방지할 수 있다.
springframework.boot 플러그인은 깊이 들어가면 gradle 동작과정까지 알아야하는 항목이라 가볍게만 찾아보았는데, Gradle이 스프링부트 프로젝트를 빌드하고 실행하는데 필요한 설정을 추가해주는 역할을 한다고 한다.
스프링부트 gradle plugin 동작에 관한 상세한 내용은 아래 링크에서 확인할 수 있다.
https://docs.spring.io/spring-boot/docs/current/gradle-plugin/reference/htmlsingle/
Spring Boot Gradle Plugin Reference Guide
To manage dependencies in your Spring Boot application, you can either apply the io.spring.dependency-management plugin or use Gradle’s native bom support. The primary benefit of the former is that it offers property-based customization of managed versio
docs.spring.io
2. bootRun
gradle에는 bootRun이라는 기능이 있다. 이건 jar파일 없이 빌드하고 실행하는 방식을 말한다. 따라서 bootRun으로 어플리케이션을 실행하게 되면 프로젝트 루트 디렉토리 아래에 build 디렉토리가 생성되는 것을 확인할 수 있다.

bootRun 테스크에 관한 더 자세한 내용은 아래링크를 참고해주세요.
Spring Boot Gradle Plugin Reference Guide
To manage dependencies in your Spring Boot application, you can either apply the io.spring.dependency-management plugin or use Gradle’s native bom support. The primary benefit of the former is that it offers property-based customization of managed versio
docs.spring.io
3. lombok 설정하기
lombok 플러그인을 받은 후에 추가적으로 세팅해야하는 항목이 있다. Settings에서 Annotation Processors를 활성화 시키는 것이다. 아래에서 설정할 수 있다.

4. 변수 추출 단축키로 빠르게 리팩토링 하는 방법
약간 제목만 보면 감이 안올 수 있는데, 잘 생각해보면 코드를 짤때 순서가 "변수명 먼저 정하고 -> 표현식 구현"하기 보다는 "표현식 구현 -> 변수명 정하기" 순서로 구현한다.
표현식이라는 건 어떤 반환값이 있는 메서드 호출 구문일 수 도 있고 연산식일 수 도 있는데 어쨌든 표현식을 구현하고 반환 값을 반환 받기 위해 표현식 제일 앞으로 커서를 이동시키고 반환 값을 받기 위해 = 연산자를 적는등 설명하면 간단해보이지만, 실제 코드 구현할때 빈도가 높은 행위라서 요런 부분을 한번에 자동화해주는 기능이 있는데 Introduce Variable이라는 기능이다. 아래 링크에서 자세한 내용과 단축키를 설명해두었다.
관련 포스팅 >> 변수추출 단축키로 빠르게 리팩토링하기
[IntelliJ] 변수추출 단축키로 빠르게 리팩토링하기
코드 작성 시간을 최소화하해 생산성을 높이고 중복 표현식을 빠르게 리팩토링할 수 있는 "Introduce Variable" 단축키 사용법 및 예시를 소개드립니다. 코드 작성 시간을 줄여주는 "Introduce Variable" 단
timotimo.tistory.com
5. 변수 추출(Introduce Variable) 단축키와 에버노트 전역 단축키 충돌 -> 에버노트 전역단축키 해제하는 방법
에버노트(Evernote)라는 텍스트 편집기를 사용하는데, 에버노트는 아래와 같이 전역 단축키를 제공한다. 전역 단축키라는건 해당 어플리케이션을 활성한 상태에서만 적용되는 것이 아니라 윈도우 전체에서 적용되는 단축키를 말한다.


에버노트 상단 도움말 > 단축키를 누르면 사이드바가 열리는데 거기서 전역항목 드랍다운 버튼을 클릭하면 아래와 같이 전역에 매핑되어있는 단축키들이 보인다. 저 중에 Ctrl + Alt + V가 좀 전에 인텔리제이 변수 추출 기능의 단축키와 동일하게 매핑되어 있는데 이렇게 같은 키로 매핑되어 있는 경우에는 전역 단축키에 우선권이 주어지기 때문에 에버노트에 매핑되어있는 전역 단축키를 해제시켜주면 인텔리제이에서 변수 추출기능을 단축키로 사용할 수 있다. (물론 인텔리제이 변수추출 단축키를 다른 것으로 매핑해도 된다.)
6. 새로운 자바 클래스 생성하기(New Java Class) 단축키 매핑
New Java Class는 단축키가 매핑되어 있지 않은 기능인데 단축키 세팅에 들어가면 볼 수 있다. 어플리케이션 처음에 구축하는 시점에는 자바 클래스를 새로 생성하는 경우가 많기 때문에 단축키를 적당하게 매핑해서 사용하면 생산성을 올릴 수 있다. 추천하는 단축키는 윈도우 기준 alt + N이다.

7. 타임리프 (Thymeleaf)
템플릿 엔진은 웹 어플리케이션에서 웹 페이지를 동적으로 생성하기 위한 도구인데 사용자 요청을 받으면 서버에서 렌더링을 해서 클라이언트로 내려준다.
타임리프는 자바 템플릿 엔진인데 특별히 스프링부트와 궁합이 좋다. 이유는 스프링과 Integration 되어 있기 때문에 서로 상호 기능을 지원하여 개발된다.

스프링 부트에서 thymeleaf를 사용할때 요렇게 spring-boot-starter-thymeleaf 만 받으면 알아서 타임리프를 사용하기 위한 의존성 모듈들을 받아오게 된다.
8. 타임리프 XML NameSpace
XML은 웹에서 데이터를 잘 전송하고 잘 받기 위해 약속을 정한 것이기 때문에, 자기 마음대로 태그를 지정해도 안되고 같은 이름을 쓰는 태그가 있어도 타임리프 태그라는 것을 식별할 수 있어야 한다.
그래서NameSpace를 템플릿 엔진을 사용하는 html파일 상단에는 네임스페이스를 정의한다. NameSpace는 XML 문서에서 요소와 속성의 이름 충돌을 방지하고, 고유한 이름을 부여하는 기술이다. (고유 식별자인 URI를 활용해 접두사를 지정한다. 어짜피 고유한 값이기 때문에 활용하는 것)

이렇게 xmlns(XML NameSpace)를 th로 지정하고 URI에 타임리프 공식홈페이지 URI를 사용한 것을 볼 수 있다. 이제 정의한 th라는 네임스페이스를 태그에 사용하면, 받는 사람도 타임리프 템플릿에서 정의한 태그를 썼다는 것을 알게되고 알맞게 처리할 수 있게 되는 것이다.
추가로 타임리프 특징 중 하나는 렌더링 없이 HTML파일을 직접 열어도 클라이언트 렌더링만으로 파일을 열 수가 있다.
9. 스프링 공식 홈페이지에서 지원하는 튜토리얼(Getting Started Guide)을 프로젝트를 통해 연습하기
스프링에는 정말 다양한 API들을 제공하기 때문에 특별히 웹 관련해서 공부를 해보고 싶어도 막막한 경우가 많은데, 이때 스프링 공식 홈페이지에서 다양한 케이스의 튜토리얼을 제공하는데 보면서 따라 프로젝트를 만들어 보는 것도 큰 도움이 될 것 같다고 생각했다.
https://spring.io/guides#gettingStarted
Spring | Home
Cloud Your code, any cloud—we’ve got you covered. Connect and scale your services, whatever your platform.
spring.io
위 페이지에서 관련 내용들을 확인해볼 수 있다.
Getting Started | Serving Web Content with Spring MVC
Spring | Home
Cloud Your code, any cloud—we’ve got you covered. Connect and scale your services, whatever your platform.
spring.io
위 튜토리얼 중에 Spring MVC를 사용해보는 튜토리얼인데 요것부터 한번 해봐도 좋을 것 같다.
10. 인텔리제이 사용하지 않는 Import 구문 일괄 제거하는 단축키 (Optimize imports)
코드를 리팩토링하다보면 없어진 구문에서 사용하던 라이브러리들이 상단에 import되어 하나하나 지워야하는 번거로운 상황이 발생하는데, 이때 Optimize Imports 단축키 한번이면 현재 파일에서 사용하는 라이브러리를 제외하고 사용하지 않는 import 구문을 모두 제거해주는 매우 활용도 좋은 단축키이다.

윈도우에서는 ctrl + alt + O로 매핑되어 있다.
'블로그 > 개발일지 TIL' 카테고리의 다른 글
| 인텔리제이 Gerrit 플러그인에서 지원하는 git 명령어 정리 (1) | 2023.08.18 |
|---|---|
| 인텔리제이 git rebase 기능, 웹에서 git 연습하기, redis sentinel, cluster (1) | 2023.08.17 |
| 스프링 RequestMapping, 컨텍스트 호출, 배포서술자, WEB-INF (0) | 2023.03.16 |
| 스프링 @RestController와 @Controller (1) | 2023.03.12 |
| Redis 서버, 클라이언트, SDR, Redis 마이그레이션 참고사항 (0) | 2023.02.14 |




최근댓글