스프링부트 + 스프링시큐리티 + JWT + MyBatis + MariaDB로 진행하는 API프로젝트에서 참고하면 좋은 프로젝트 구조와 pom.xml
을 공유하고자한다. 프로젝트 구조와 사용하는 의존성에는 완벽이란 없다. 자신의 프로젝트에 맞게 알아서 골라서 사용하면 된다.
프로젝트구조
src/main/java
config: 시큐리티설정파일, DB연결설정파일
controller
dao
dto
exception
payload: 성공이나 실패등이 일어났을때 내가 챙겨 보고 싶은 message를 뜻한다. 추천 참고링크 - JSON과 Payload
security
service
mapper: mapper interface파일
src/main/resources
pom.xml 의 dependencies 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 <dependencies > <dependency > <groupId > org.springframework.boot</groupId > <artifactId > spring-boot-starter-actuator</artifactId > </dependency > <dependency > <groupId > org.springframework.boot</groupId > <artifactId > spring-boot-starter-security</artifactId > </dependency > <dependency > <groupId > org.springframework.boot</groupId > <artifactId > spring-boot-starter-web</artifactId > </dependency > <dependency > <groupId > org.mybatis.spring.boot</groupId > <artifactId > mybatis-spring-boot-starter</artifactId > <version > 2.1.4</version > </dependency > <dependency > <groupId > org.springframework.boot</groupId > <artifactId > spring-boot-devtools</artifactId > <scope > runtime</scope > <optional > true</optional > </dependency > <dependency > <groupId > org.mariadb.jdbc</groupId > <artifactId > mariadb-java-client</artifactId > <scope > runtime</scope > </dependency > <dependency > <groupId > org.projectlombok</groupId > <artifactId > lombok</artifactId > <optional > true</optional > </dependency > <dependency > <groupId > org.springframework.boot</groupId > <artifactId > spring-boot-starter-test</artifactId > <scope > test</scope > </dependency > <dependency > <groupId > org.springframework.security</groupId > <artifactId > spring-security-test</artifactId > <scope > test</scope > </dependency > <dependency > <groupId > org.apache.commons</groupId > <artifactId > commons-lang3</artifactId > </dependency > <dependency > <groupId > org.springframework.boot</groupId > <artifactId > spring-boot-starter-validation</artifactId > </dependency > <dependency > <groupId > org.springframework.boot</groupId > <artifactId > spring-boot-starter-tomcat</artifactId > <scope > provided</scope > </dependency > </dependencies >
의존성 명칭
기능
주요 사용
추천 참고링크
spring-boot-starter-actuator
Spring Boot Application의 상태 관리
CORS설정
링크
spring-boot-devtools
스프링 부트에서 제공하는 개발 편의를 위한 모듈
자동재시작, liveLoad
commons-lang3
문자열 효율적인 처리
링크
spring-boot-starter-validation
효과적인 유효성 검사
@NotNull @NotBlank @NotEmpty @AssertTrue @Min @Max
링크
여담 난 인복이 좀 타고난 편이다. 주변에 좋은 지인들이 참 많고, 일터에서도 좋은 사람들을 더 많이 만났다. 참 감사한 삶이다. 이번 팀장님도 역시나 최고다…👍 이번에 내가 맡은 프로젝트는 내가 처음 해보는 것 투성이었다. 내가 해본게 몇개있겠냐만은 정말 어려운 개념들이라 주말을 불사하고 이해하려고 노력했다. 시간이 갈수록 조급해지고 얼마나 답답하던지…
프로젝트 셋팅을 하는 입장에서 프로젝트 구조와 의존성 추가하는 부분이 가장 어려웠다. 특히 어디에 어떤 폴더를 생성하고 그 폴더에는 무슨 파일을 넣으면 좋을지 난감했다. 팀장님이 내 마음을 어떻게 아시고 갑자기 자리로 부르셨다. 그리고 내 프로젝트 상황에 맞게 프로젝트구조부터 코드리팩토링할 수 있도록 하나부터 열까지 설명해주셨다. 물론 설명을 알아듣진 못했지만… 못 알아들은 부분들은 열심히 필기했다. 길을 알려주셨으니 이제 열심히 걸어가기만 하면 된다.
이 자리를 빌어(?) 배움의 길잡이를 해주신 팀장님 다시한번 감사드립니다! 최고최고👍