728x90
반응형
Spring Initializr
Spring Initializr 를 사용하면 SpringBoot 기반의 프로젝트를 쉽게 만들 수 있다.
https://start.spring.io/ 의 주소로 접근하면 아래와 같은 창이 뜬다.
Project
SpringBoot를 빌드하고 배포하는 방식을 선택한다.
- 과거에는 Maven을 많이 사용했지만 최근에는 Gradle을 사용하는 추세이다.
Language
프로젝트에 사용할 프로그래밍 언어를 선택한다.
SpringBoot
SpringBoot 버전을 선택한다.
- SNAPSHOT은 아직 개발 중인 데모버전이다.
- M1이나 M2 등은 정식 릴리즈되지 않은 버전이다.
- 다른 것 없이 버전만 명시되어 있는 것이 정식 릴리즈 된 버전임으로 이들 중에서 선택하면 된다.
- 높은 버전은 높은 자바 버전을 필요하므로 버전만 명시되어있는 낮은 버전을 선택하는 것이 좋다.
Project Metadata
Group
프로젝트를 정의하고 구분하게 해주는 고유한 식별자 정보이다. 보통 회사의 도메인명을 적는다.
- group은 package 명명 규칙을 따르도록 한다. (제어하는 도메인 이름의 반대로 시작)
- 최소한의 컨트롤하는 도메인 네임이어야 한다.
- 하위 그룹은 얼마든지 추가할 수 있다.
- 예: org.apache.maven, org.apache.commons
- 프로젝트 구조를 사용하면 잘 구분되는 groupId를 만들 수 있다.
- 현재 프로젝트가 다중 모듈 프로젝트라면, 부모 groupId에 현재 프로젝트의 식별자를 추가하는 방식.
- 예: org.apache.maven, org.apache.maven.plugins, org.apache.maven.reporting
Artifact
프로젝트 이름이라고 생각하면 된다. 빌드했을 때 나오는 결과물이다. (jar 파일)
- 이름은 원하는 것으로 아무거나 정해도 괜찮다.
- 단, 소문자로만 작성하도록 하고 특수문자는 사용하지 않는다.
- 버전 없는 jar파일의 이름- third party jar 파일인 경우면, 할당된 이름을 사용해야 함.
Group은 큰 틀을 의미하고, ArtifactId는 그 안에 작은 틀을 의미한다. 즉, ArtifactId는 프로젝트의 각 기능들이다.
예를들어, 회사에서 정산시스템을 만든다면, GroupId는 회사명, ArtifactId는 주문 정산, 월급 정산 등으로 정의할 수 있다.
Name
프로젝트 이름이다.
- 일반적으로 Artifact와 동일하게 사용하며 Artifact 작성 시 따라 작성된다.
- 예를들어, 프로젝트 이름이 my-app이리면 생성된 프로젝트에 MyAppApplication으로 메인 클래스가 생성된다.
Description
프로젝트의 설명이다.
Package name
프로젝트의 루트 패키지를 설정한다.
- Group과 Artifact를 설정하면 자동으로 만들어 준다.
- 변경 가능하다.
Packaging
기본이 .jar이다.
- spring framework와 model2는 .war를 사용한다.
- Jar로 선택하면 tomcat이 자동으로 세팅되어 단독으로 실행 가능하다.
Java
- 자바 버전을 선택한다.
Dependencies
프로젝트에 필요한 라이브러리를 선택할 수 있다.
- 우측 상단의 ADD DEPENDENCIES 버튼을 클릭하여 추가한다.
- 나는 보통 아래 4개 정도만 넣고 나머지는 필요에 따라 직접 넣는다.
- Spring Web
- Spring Security
- Spring Data JPA
- Lombok
GENERATE 버튼을 클릭하면 생성된 소스 및 설정 파일로 구성된 Zip 파일이 다운로드된다.
EXPLORE 버튼을 클릭하여 구성 정보를 확인할 수 있습니다.
참고 자료
728x90
반응형
'Programming > Spring' 카테고리의 다른 글
[Spring] Spring MVC 와 Spring Webflux의 차이점 (0) | 2024.03.17 |
---|---|
[스프링] MVC, MVP, MVVM 디자인 패턴 (0) | 2023.07.03 |
[스프링] 디자인 패턴 (0) | 2023.07.02 |
[스프링] 관점 지향 프로그래밍 (AOP) (0) | 2023.06.29 |