현재 진행중인 프로젝트의 디렉토리 구조를 설명하려고 합니다.
java : 1.8
spring : 4.3.11

package presentation은 Hierarchical을 사용하고 있어
java 디렉토리와 resource 디렉토리로 구분되어 보입니다.
java디렉토리에는 annotation, api, configuration, enums, exception, lib, model, util 디렉토리로 구분되어 있습니다.
spring에서 제공하는 annotation이 아닌 개발한 annotation을 모아두는 곳입니다.
LoginNotRequire annotation을 통해 인증을 하지 않고 접근할 수 있는 class를 지정할 수 있게끔 개발하였습니다.

controller, service, dao, repository 등의 실제 서비스 class들의 모음입니다.
agent, 외부 solution, 관리자, 모바일 서비스, 사용자가 각각 접근하는 controller를 구분하게끔 패키지 구성을 하였습니다.
dto는 db model을 response와 request로 구분하여 class를 구성하였습니다.(lombok 라이브러리 사용)
사용하는 라이브러리들의 config파일이 모여있는 패키지입니다.
redis, swagger, security config 등의 라이브러리의 환경설정 파일이 있습니다.
mybatis mapper와 연결하는 repository파일들이 모여있는 패키지입니다.
controller와 repository 사이 모든 프로세스를 수행하는 service들이 모여있는 패키지입니다.

다국어(i18n), mybatis xml, application.yml 등 각종 설정파일 및 db query가 모여있는 디렉토리입니다.
다국어 처리 및 공통 사용을 위한 properties 파일이 모여있습니다.
repository에 mapping된 실제 query 파일이 모여있습니다.
maven에 환경설정 파일입니다.
위처럼 구성하여 협업 및 관리가 용이하도록 구성했습니다.