Table of Contents
Spring Boot 템플리트 프로젝트 생성하기
프로젝트를 진행하다 보니 Entity-Repository-Service-Controller 생성이 상당히 유사한 패턴으로 이루어지는 것을 알게된다.
예를들어, User 엔터티를 위해 생성하는 클래스들이 아래와 같다고 하자.
User
UserExpression
UserRepository
UserRepositoryCustom
UserRepositoryImpl
UserConverter
UserDto
UserCreateRequestDto
UserModifyRequestDto
UserSearchRequestDto
UserResponseDto
UserService
UserController
또 Store 엔터티를 위해서 동일한 형태의 클래스들을 생성하게 된다.
Store
StoreExpression
StoreRepository
StoreRepositoryCustom
StoreRepositoryImpl
StoreConverter
StoreDto
StoreCreateRequestDto
StoreModifyRequestDto
StoreSearchRequestDto
StoreResponseDto
StoreService
StoreController
자동 생성 스크립트
이에 착안해 클래스 자동생성 스크립트를 생성해 본다.
from shutil import copyfile
import os
class_list = []
replace_list = []
data_type = 'class'
# ======================================
# 데이타 읽기
# ======================================
f = open("generate.txt", 'r', encoding='UTF8')
lines = f.readlines()
for line in lines:
line = line.strip()
if line.startswith('#'):
if 'class' in line:
data_type = 'class'
elif 'replace' in line:
data_type = 'replace'
else:
if line.strip() != '':
if data_type == 'class':
class_list.append(line.strip())
elif data_type == 'replace':
replace_list.append(line.strip())
f.close()
for src_path in class_list:
dest_path = src_path
for r in replace_list:
r = r.split('\t')
dest_path = dest_path.replace(r[0], r[1])
os.makedirs(os.path.dirname(dest_path), exist_ok=True)
copyfile(src_path, dest_path)
with open(dest_path, 'r') as file:
file_data = file.read()
for r in replace_list:
r = r.split('\t')
file_data = file_data.replace(r[0], r[1])
with open(dest_path, 'w') as file:
file.write(file_data)
# class
src\main\java\com\example\template\domain\partner\Partner.java
# replace
partner test
Partner Test
고객사 테스트
작동방식
class 단에 생성해야 할 소스코드 목록을 추가해 준다.
replace 단에 변경해야할 문자열을 넣어줍니다.
파이선에서 디렉토리 또는 파일명 또는 소스코드에서 변경해야 할 텍스트들을 변경해 준 후 파일을 생성합니다.