수 많은 우문은 현답을 만든다

Springboot 초기설정 방법 본문

토이 프로젝트/뭘 제작해볼까

Springboot 초기설정 방법

aiden.jo 2022. 1. 18. 10:38

안녕하세요, 조영호 입니다.

 

간단한 쇼핑몰을 제작해보면서 기초를 다지고 스스로 놓쳤던 부분들을 챙길 수 있을 것이라는 기대로 글을 시작합니다.

이번 프로젝트에서는 다양한 기술들을 다뤄볼 예정입니다. Springboot, JPA, Mysql, Swagger, Spring Security, JWT Token, Redis, Spring Batch, Rabbit MQ, Docker, Exception Handler, React.js or Vue.js 등의 내용을 다루면서 쇼핑몰을 제작하도록 하겠습니다.

 

오늘은 IntelliJ IDE를 사용해 간단한 Springboot Web Application을 제작해보겠습니다. ORM은 JPA를 사용할 계획이고 API 문서화는 Swagger를 사용해보겠습니다.

 

 

1. 인텔리제이로 Springboot 프로젝트 생성

1-1. War 설정을해야 웹 에서 실행이 됩니다.

 

 


2. 애플리케이션 실행해보기



2-1. 간단하게 컨트롤러를 만들고 실행 해보겠습니다.

정상적인 실행 완료 화면

 

 


3. DB(데이터베이스) 연결

build.gradle에 의존성 추가

 

application.properties에 접속 정보 저장

 


4. 프로필 설정

애플리케이션을 개발할때는 Local, Dev, Sandbox, Cbt, Prod 등의 환경에서 배포 및 테스트를 진행합니다.

각 Phase에 따라 테스트할 수 있도록 프로젝트의 Profile을 설정해줄 수 있습니다.

springboot 2.6 이후부터는 spring.active.profiles=local 로는 작동하지 않아 config를 써야합니다.

4-1. 실행환경 설정

4-2. 환경파일 설정

 

 


5. JPA 적용하기

이번 프로젝트에서는 JPA(Java Persistence API)를 사용하도록 하겠습니다.

JPA의 정의나 장, 단점은 다음 블로그에서 확인해주세요.

의존성 추가

 

5-1. DB Table 및 Data 추가하기

 


6. Controller, DTO, Service, Entity 개발해보기

우선 컨트롤러에 가입(join) 과 조회(getUser) 함수를 작성하겠습니다.

 

6-1. DTO 작성

데이터가 담길 그릇(객체, 클래스)을 생성합니다.

 

6-2. Entity 작성

엔티티는 데이터베이스를 호출할때 사용되는 데이터 연관관계 정의서 입니다.

# pk를 자동으로 만들기 위한 전략

- 엔티티 클래스에 @GeneratedValue(strategy = GenerationType.IDENTITY)를 쓴다.

- Insert 이전에 select/update로 발생하는 별도 커넥션 풀을 쓰지 않기위해 IDENTITY 옵션을 선택.

 

# save()시 데이터가 실제로 저장되지 않는 현상이 발생한다면?

- 엔티티 클래스에 @Table(name="users”) 달아줘야 실제 저장된다.

 

 


7. Repository 작성

 

7-1. 실행시 쿼리 내용이 보이도록 설정 추가

 

 


8. Service 작성

사용자 정보를 불러오는 getUser 메소드와 사용자 가입을 진행하는 join 메소드를 구현합니다.

간단한 JDBC 테스트용 코드이기 때문에 실제 서비스를 만들때는 보안을 신경써야합니다.

# ids for this class must be manually assigned before calling save() 에러가 발생하면?

- @Builder사용시 pk값 컬럼(@Id)가 빠졌다는 경고다. (UserDto)

- @GeneratedValue 로 자동 생성 해주거나 혹은 . 직접 Id값을 할당해야 한다. (UserEntity)

 

# 객체에 .set .get을 쓰려는데 참조가 되지 않는경우

- getter, setter가 빠진 것

- @DATA 선언(@Getter, @Setter, @RequiredArgsConstructor, @ToString, @EqualsAndHashCode 한번에 설정해준다)

 

 


9. Swagger 3.0 설정 방법

스웨거는 API 개발 문서를 자동으로 만들어주는 프레임워크입니다.
API 테스트를 위해 포스트맨을 쓰거나 임시 프론트 웹을 만들지 않아도 되고 문서화 하지않아도 된다 장점이 있습니다.

 

9-1. 라이브러리 추가

 

9-2. 스웨거 설정 클래스 생성

basePackeage 에는 controller가 존재하는 패키지 경로를 입력해야합니다.

 

9-3. Swagger 접속해보기

접속은 http://localhost:8080/swagger-ui/# 로 접속해볼 수 있습니다.

 

9-4. 상세설정

SwaggerConfig 스웨거 기본 정보를 아래와같이 바꾸고

 

컨트롤러에 API 설명하는 내용을 지정해주면

 

아래와같이 변경된 Swagger를 확인할 수 있습니다.

 

감사합니다.

 

'토이 프로젝트 > 뭘 제작해볼까' 카테고리의 다른 글

Fast API 초기 설정  (0) 2024.01.08