# 서론 스프링 부트를 자바로 작성하다보면 DTO를 만들때 클래스가 매우 많이 생성되서 한 눈에 보기 불편한 경우가 생겼다. DTO를 코틀린으로 작성하면 얻는 이점 : 하나의 코틀린 파일에 여러개의 DTO 클래스를 data class로 작성할 수 있다. 그래서 코틀린을 도입하여 리펙토링을 진행해보려 하면서 느낀점을 정리하려고 글을 쓴다. * Ektour 리뉴얼 프로젝트에 적용함으로써 느낀 느낀점을 작성함. 참고한 글 https://d2.naver.com/helloworld/6685007 # 코틀린을 도입하면서 직면한 문제 우선, DTO를 간략화 하기위해서 코틀린을 도입했으므로, DTO 부분 먼저 리펙토링을 진행하였다. 0. 코틀린으로 static 메소드 작성하기 코틀린으로 작성된 객체를 편의 메소드 (엔..
스프링 부트와 리액트를 통합 빌드하여 배포하는 방법을 정리, 기록 한다. # 디렉토리 구성 먼저 기존에 만들어 놓은 리액트 프로젝트를 스프링 프로젝트 내부로 옮겨와야한다. 주의! gradle 설정을 쉽게 하기위해서 리액트 프로젝트 디렉토리 명은 frontend로 고정한다. 인텔리제이 내부에서 리액트 폴더를 드래그 앤 드랍하면 렉을 먹는다. 윈도우 탐색기로 폴더를 열어서 넣어주도록 하자 (좀 오래걸린다.) # 리액트 설정 리액트 package.json 에 proxy를 설정해준다. (나중에 로컬 환경이 아닌곳으로 배포해도, 아이피 주소를 적으면 된다.) 주의! http:/를 꼭 붙혀주도록 하자 # build.gradle 설정 def frontendDir = "$projectDir/src/main/fronte..
# 서론 [ek tour 리뉴얼 프로젝트 중 기록] 이미지 파일을 스프링 부트 resource에 넣으면 빌드를 하면 수정하기 힘들다. 그래서 동적으로 변경가능하게끔 외부 경로에서 (가상 인스턴스에 이미지 파일을 넣어놓고, 이를 경로로 불러오기) 가져오는걸 구현하는 방법을 기록한다. # 가상 인스턴스에 이미지 업로드 pwd 명령어를 통해서 해당 디렉토리 위치를 파악한다. /home/ubuntu/spring 뭔가 이렇게 설정을 하면 될 것 같지만 안 된다. 따라서 추가적인 설정을 해줘야한다. # 스프링 부트 설정 @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/im..
[ek tour 리뉴얼 프로젝트 중 기록] Thymeleaf 활용하여 어드민 백오피스 메인 페이지 페이징 기능과 검색 기능을 구현하면서 삽질했던 내용을 기록한다. # Controller @GetMapping("/main") public String main(@Login Admin loginAdmin, Model model, @PageableDefault(size = PageConfig.PAGE_PER_COUNT, sort = PageConfig.SORT_STANDARD, direction = Sort.Direction.DESC) Pageable pageable) { if (loginAdmin == null) return "login"; Page eList = estimateService.findAllBy..
# 서론 프로젝트를 진행하다 보니 디비에있는 데이터를 불러와서 엑셀 파일로 저장해야하는 기능을 구현해야하는 일이 생겼다. 그래서 조사를 해보고 구현완료된걸 나중에 다시 삽질하지 않기 위해서 기록한다. 자바에서 엑셀을 다루기위해선 아파치 재단에서 만든 POI라는 라이브러리를 사용한다. # 환경 설정 Gradle 의존성 implementation group: 'org.apache.poi', name: 'poi', version: '5.0.0' implementation group: 'org.apache.poi', name: 'poi-ooxml', version: '5.0.0' 구현할 기능의 흐름도는 다음과 같다. 엑셀 파일 불러오기 -> DB에서 데이터 읽어와서 엑셀에 쓰기 -> 해당 엑셀파일 다운로드 # ..
# 개요 네이버 메일을 이용해서 스프링 부트에서 메일을 보내는 기능을 구현한다 (Gmail은 5/30 이후로 정책이 바뀌어서 이제 손 쉽게 메일을 보내기 어려워졌다) # 환경설정 Gradle 의존성 추가 implementation 'org.springframework.boot:spring-boot-starter-mail' 네이버 메일 설정 SMTP 사용을 사용함으로 설정해준다 application.yml spring: mail: host: smtp.naver.com port: 465 username: 아이디@naver.com password: 비밀번호 properties: mail.smtp.auth: true mail.smtp.ssl.enable: true mail.smtp.ssl.trust: smtp...
@Null - null 만 허용 @NotEmpty - null, "" 허용X - " " 은 허용 @NotBlank - null, "", " " 다 허용 X @NotNull - null 허용 X, "", " "는 허용 - int 타입에 사용가능 @Email - 이메일 형식 검증 @Pattern(regexp = "") - 정규식으로 직접 검증 @Size(min=, max=) - 길이제한 # 휴대폰 번호 정규식 (010-1234-1234 or 01012341234) @Pattern(regexp = "^01([0|1|6|7|8|9])-?([0-9]{3,4})-?([0-9]{4})$")