실전 개발 가이드
MINU 코딩 가이드
로컬환경 설정
config-lib.gradle 수정
minu-webapp모듈, minu-api-client모듈, 개발대상모듈에서 arms 관련 라이브러리를 project implementation으로 변경한다.
ex)
/* minu-commons */ // implementation 'kr.co.rmsoft:minu-commons:2.0.1.RELEASE' implementation project(path: ':minu-commons', configuration: 'runtimeElements') /* minu-domain-data */ // implementation 'kr.co.rmsoft:minu-domain-data:2.0.0.RELEASE' implementation project(path: ':minu-domain-data', configuration: 'runtimeElements') /* minu-msa-api-client */ // implementation 'kr.co.rmsoft:minu-api-client:2.2.0.RELEASE' implementation project(path: ':minu-api-client', configuration: 'runtimeElements')minu-webapp 의 application-routes.yml 수정
local profile api-gateway 정보를 local 환경으로 변경
ex)

WebApp
html 생성
ex) sym99.html
js 생성
ex) sym99.js
WebappConfig.java 에서 기능에 해당하는 Category 추가.
ex) Category enum에 SYM_99 추가

viewRouter 생성
ex) Sym99ViewRouter.java
message source, message data(SYM_MESSAGE), common code를 가져올수 있다.
top-menu.html 메뉴 추가.
ApiController 추가.
ex) Sym99ApiController.java
기타
validation :
javax.validation 에서 커버가능한 유효성 검사는 annotation으로 처리하고 메세지는 validation.properties에 정의하여 사용한다.
ex) SymSampleSP.java

annotation validate에 대한 처리는 @Validated (org.springframework.validation.annotation)로 처리하고
annotation으로 처리가 불가한 경우 개별 Validator를 생성하여 처리한다.
ex) Sym99ApiController.java, Sym99Validator.java

Minu domain data
SP 생성(검색창의 검색 필드) : 검색창이 없는 화면의 경우 NoOpSP.java로 대체할 수 있다.
ex) SymSampleSP.java
VO 생성(화면에 표시할 필드) : 화면에 표시할 내용이 없는 경우 NoOpVO.java로 대체할 수 있다.
ex) SymSampleVO.java
Minu api client
Client 생성
ex) SymSampleClient.java
각 모듈
ApiController 생성
ex) SymSampleApiController.java
Entity Class 생성
ex) SymSample.java
상속가능한 부모 클래스 :
BaseAuditModel.java (createdBy, createdAt, updateBY, updatedAt)
CreatedAuditModel.java (createdBy, createdAt)
DatetimeAuditModel.java (createdAt, updateAt)
SimpleModel.java : 테이블의 등록자또는 변경자 컬럼이 포함되어 있지 않는 모델
Service 생성
ex) SymSampleService.java
상속가능한 부모 Service :
BaseService.java
CreatedAuditService.java
DatetimeAuditService.java
SimpleService.java
ServiceImpl 생성
ex) SymSampleServiceImpl.java
상속가능한 부모 ServiceImpl
BaseServiceImpl.java
CreatedAuditServiceImpl.java
DatetimeAuditServiceImpl.java
SimpleServiceImpl.java
Repo 생성
ex) SymSampleRepo.java
상속가능한 부모 Repo :
BaseJPAQueryDSLRepo.java
BaseJPADataTablesRepo.java (datatables 지원)
Query 생성
ex) SymSampleQuery.java
RepoImpl 생성
ex) SymSampleRepoImpl.java
상속가능한 부모 Class :
QuerydslRepoSupport.java
기타
자주쓰는 js 라이브러리
lodash : https://lodash.com/docs/4.17.15
Grid 제품:
ParamQuery (6.2.3)
: https://paramquery.com/pro/api62
: https://paramquery.com/pro/demos62
BootStrap 테마 : https://themeon.net/nifty/v2.9.1/index.html
자주쓰는 gradle 명령어
compileQuerydsl : Q클래스 생성
ex) 모듈명:clean 모듈명:compileQuerydsl
minu-system-mng:clean minu-system-mng:compileQuerydslbootJar : jar파일 생성
ex) 모듈명:clean 모듈명:bootJar
gradle minu-system-mng:clean minu-system-mng:bootJar권한관리 신규 기능추가 -> 권한생성
각 Controller에서 Secured annotation 적용
REST API 개발
Controller 작성
@RestController @RequestMapping("/api/v1") public class SampleController { // API 메서드 구현 }Service 계층
비즈니스 로직 구현
트랜잭션 관리
Repository 활용
데이터 접근 계층
쿼리 메서드 활용
화면 개발
Thymeleaf 템플릿
기본 문법
레이아웃 구성
프론트엔드 개발
JavaScript 모듈화
CSS 스타일링
jstree
jsTree 개발 가이드
1. 개요
jsTree는 jQuery 기반의 트리 구조를 구현하는 JavaScript 라이브러리입니다. 폴더 구조, 메뉴 구조 등 계층적 데이터를 시각화하는데 사용됩니다.
2. 설치 및 설정
2.1 필수 파일
3. 기본 사용법
3.1 HTML 구조
3.2 기본 초기화
4. 주요 기능
4.1 이벤트 처리
4.2 노드 조작
4.3 검색 기능
5. 고급 기능
5.1 체크박스 사용
5.2 드래그 앤 드롭
5.3 컨텍스트 메뉴
테스트 코드 작성
단위 테스트
JUnit 5 활용
Mockito를 이용한 목킹
통합 테스트
Spring Boot Test
TestContainers 활용