Spring boot란?
- Spring Boot란 Spring Framework 프로젝트 생성시 처음하면 매우매우 복잡하고 절대로 쉽게 할 수 없는 초기 설정 및 라이브러리 세팅을 간단하게 만들어주는 프레임워크(FrameWork)입니다.
- 학원에서 STS를 통해 스프링 레거시 프로젝트(Spring Legacy Project)를 할 때 매우 오래걸린 초기세팅이 여기선 단 몇번의 클릭으로 끝나는 것을 보고 많이 놀랐던 것 같습니다. 이제 레거시 프로젝트와 스프링 부트 프로젝트의 세팅을 비교해보겠습니다.
Spring Boot 프로젝트 생성
우선 IDE는 스프링 부트(Spring boot)를 다루실 때 많이들 사용하시는 IntelliJ를 기준으로 말씀드리겠습니다.
제가 아는 스프링 부트 생성 방법은 두가지로
- intelliJ에서 직접 스프링 부트 프로젝트 생성하기
- Spring.start.io에서 만들어 IntelliJ에서 임포트하기
입니다. IntelliJ에서 생성하는 방법 먼저 보여드리겠습니다.
우선 프로젝트 새로 만들기에서 프로젝트를 클릭합니다.
그럼 다음 화면이 나타나게 되는데 왼쪽 제너레이터(Generator)에서 Spring Initializr를 누르면 됩니다.
그러면 해당 화면에서 프로젝트명, 저장 경로, 사용언어 및 빌드툴,JDK버젼을 선택하고 다음을 눌러줍니다.
빌드 툴은 보통 Gradle을 추천드리는데, Maven보다 훨씬 빌드속도가 빠르고 잠시 후 보여드리겠지만 라이브러리 추가시의 가독성 역시 훨씬 뛰어납니다.
다음을 누르면 아래의 사진 처럼 화면이 나옵니다. 초기에 추가해놓을 옵션들과 부트의 버젼을 선택합니다.
이 부분에서 기본 Spring과 많은 차이가납니다. MVNRepository에서 하나하나 찾고 맞는 버젼에 따라 가져와 입력하는 것이 아닌, 기능만 선택하면 해당 라이브러리를 자동으로 세팅해주는 것입니다.
대표적으로 몇가지 말씀드리면 Developer Tools는 개발의 편의성을 위한 툴을 의미합니다. 대표적으로 Lombok은 엔티티등을 작성할 때 어노테이션 하나만으로 수많은 반복코드를 작성하지 않아도 되도록해줍니다.
Web은 말 그대로 Web에 관한 기능들입니다. SpringWeb부터 Spring session등.... 세부적인 것들은 검색하셔서 필요한 기능을 추가하시면 됩니다.
그 이외에도 view단과 서버단을 연결하는 Template Engines, 보안 기능의 Security, 관계형 DB 관련 기능인 SQL등등 필요한 것들을 이 화면에서 추가한 뒤 생성을 누르면 됩니다. 저는 해당 글을 위해 기본적인 것들만 추가한 사진을 보여드리겠습니다.
보시면 Spring Web과 Lombok, MySQL과 통신할때 사용하는 MySQL Driver그리고 Spring Data JPA등 6개의 기능을 넣었습니다. 그럼 생성해볼까요?
보시면 빠르게 프로젝트가 생성되었습니다. 이제 Maven의 Pom.xml과 같은 기능인 build.gradle에서 정상적으로 기능이 추가가 되었는지 확인하겠습니다.
보시면 JPA와 JDBC, SpringWeb,lombok등 제가 추가한 기능들이 모두 추가되어 빌드까지 되어있는 상태를 확인할 수 있습니다. 또한 Gradle은 Maven과 다르게 하나의 기능당 거의 1줄만 사용하고있는데요. 빌드 속도도 물론 빠르지만 가독성도 우수해 기능이 많아져도 비교적 관리가 편할 것입니다.
이번엔 Spring.io에서 생성하는 것을 다루겠습니다. import하는 것만 다르기 때문에 빠르게 짚고 넘어가겠습니다.
우선 해당 링크에 접속합니다.
그러면 아래 사진과 같은 화면이 나옵니다.
부트 버젼, 언어, 빌드툴과 프로젝트 명을 선택한 후 추가할 라이브러리는 Dependencies옆 버튼을 클릭합니다.
여기서 IntelliJ에서 추가했던 것처럼 lombok, Spring DevTools등을 추가하신 후
GENERATE 버튼을 클릭하면 해당 프로젝트가 다운됩니다. 이후 다운 받은 파일을 IDE에서 임포트해서 열면 동일하게 생성된 프로젝트를 확인할 수 있습니다.
이렇게 오늘은 Spring Boot 프로젝트를 생성하는 법을 다뤄보았는데요, 많이 편리해진건 사실이지만 최근에 부트 프로젝트를 이리저리 건드려보니 귀찮더라도 결국 부딪히면서 Spring이나 JAVA에 대한 이해도를 높인 후 편의기능을 사용하는 것이 맞다는 생각이 듭니다. 이상으로 포스팅을 마치겠습니다.
'JAVA' 카테고리의 다른 글
JAVA Timer 클래스에 대하여 (0) | 2024.06.28 |
---|---|
[Spring boot]IntelliJ 외장 톰캣에 배포하고 실행하기 (0) | 2023.08.16 |
[JAVA] NetworkOnMainThreadException 해결 (0) | 2023.07.12 |
[JAVA] Try-Catch문에 대하여 (0) | 2023.07.11 |
[JAVA] 익명 클래스에 대하여 (0) | 2023.07.10 |