Rooted In Develop

Spring Boot 프로젝트 구조 본문

Back End/Spring Boot

Spring Boot 프로젝트 구조

RootedIn 2019. 12. 27. 17:39

Spring Boot 프로젝트를 생성하며 많은 고민이 드는 것이 프로젝트 구조입니다.

 

어떻게해야 좋을지 모르겠다면, 이 글을 참고해주세요.

 

이 글에서는 크게 2가지의 구조를 설명드립니다.

 

1. 역할별로 묶기

 

- spring-boot-project
   - src/main/java
      - me.rooted
         └ SpringBootProjectApplication.java
      - me.rooted.config
         └ SwaggerConfig.java
         └ WebSecurityConfig.java
      - me.rooted.controller
         └ BoardController.java
         └ AccountController.java
      - me.rooted.domain
         └ BoardVO.java
         └ AccountVO.java
      - me.rooted.repository
         └ BoardMapper.java
         └ AccountMapper.java
      - me.rooted.service
         └ BoardService.java
         └ AccountService.java
   - src/main/resources
      - me/rooted/repository
         └ BoardMapper.xml
         └ AccountMapper.xml
   - src/test/java
      - me.rooted
         └ SpringBootProjectApplicationTests.java

 

장점 : mybatis을 사용한다면 src/main/java/me/rooted/repository와 src/main/resource/me/rooted/repository가 자동으로 연동된다.

단점 : 하나의 기능을 개발할때 여러 패키지에 파일이 생기게 된다.

 

2. 기능별로 묶기

 

- spring-boot-project
   - src/main/java
      - me.rooted
         └ SpringBootProjectApplication.java
      - me.rooted.swagger
         └ SwaggerConfig.java
      - me.rooted.security
         └ WebSecurityConfig.java
      - me.rooted.board
         └ BoardController.java
         └ BoardService.java
         └ BoardMapper.java
         └ BoardVO.java
      - me.rooted.account
         └ AccountController.java
         └ AccountService.java
         └ AccountMapper.java
         └ AccountVO.java
   - src/main/resources
      - mybatis/sqlmaps
         └ BoardMapper.xml
         └ AccountMapper.xml
   - src/test/java
      - me.rooted
         └ SpringBootProjectApplicationTests.java

 

장점 : 기능별로 묶여있어 유지보수에 용이하다(!??)

단점 : mybatis을 사용한다면, 개별적으로 연동시켜줘야 하는 것으로 알고있다.

 

 

이렇게 Spring Boot 프로젝트 구조에 대해 설명해보았습니다.

 

저는 위 2가지 구조중 첫번째 구조인 역할별로 구성하는 것을 선호합니다.

왜냐하면, mybatis 연동에 있어서 아무것도 따로 설정하지 않아도 되거든요!(귀차니즘)

 

틀리거나 첨언해주실 것이 있으시다면 댓글 부탁드립니다.

 

봐주셔서 감사합니다.

Comments