백엔드/Spring
-
[Spring] 스케줄러를 활용한 이메일 발송 서버 샘플 코드백엔드/Spring 2023. 11. 15. 02:21
개요 Spring Web에 포함되어 있는 Scheduler를 사용하여, 1분에 1번씩 큐를 발송하는 서비스를 만들었다. 사실 Kafka, RabbitMQ를 사용했으면 좋을 것 같지만,, Webflux를 활용한 MSA 구축이 우선이여서, 사용했다. JPA를 사용하였기에 DDL은 셋팅하면 알아서 올라간다. 추가적인 발송에 대한 로직은 service 패키지를 참고하면 된다. (로직과 메일 내용이 매우 단순하다) 발송 예시 가입완료 메일과 인증 메일이 전부이다. 추후 확장성 생각하면, 더 늘어날 수도 있지만 나도 현생이 바쁘다보니 까먹기 때문에 .. 공유할겸 올린다. 소스코드 가장 중요한 소스코드이다 ㅎㅎ https://github.com/rojae/smtp-mail-server/tree/1a551b580a7c..
-
[Spring] Validation 체크를 커스텀 개발해보자 (ConstraintValidator, 초기화에 대한 궁금증)백엔드/Spring 2022. 11. 7. 22:33
자바에서는 Java Community Process (JCP)에서 “Bean Validation”이라는 스펙을 공개를 했습니다. 이는 Validation 체크를 위해서 많은 자바 진영의 개발자들이 사용하고 있습니다. 참고로 실제 우리가 사용하고 있는 @NotNull, @NotBlank와 같은 Annotation은 Bean Validation의 Implementation인 “Hibernate Validator”입니다. 위 내용은 이전의 포스팅에서 설명했습니다. https://redcoder.tistory.com/319 [Java] Bean Validation에 대해서 알아보자 (JSR-303, JSR-380, 파라미터 유효성 체크) 서비스에서 중요한 기술 중 하나가, Validation을 체크하는 기술입니..
-
[Java] Bean Validation에 대해서 알아보자 (JSR-303, JSR-380, 파라미터 유효성 체크)백엔드/Spring 2022. 11. 6. 21:57
서비스에서 중요한 기술 중 하나가, Validation을 체크하는 기술입니다. 클라이언트에서 서버사이드로 값을 전달할 때, 올바른 값이 전달되었는지, Validation을 체크 할 수 있어야 합니다. 이러한 기술을 위해서, Java Community Process (JCP)에서는 “Bean Validation”이라는 스펙을 공개했습니다. 이와 같은 기술을 통해서, 개발자는 Annotation을 사용하여, Validation을 체크할 수 있었습니다. 이 방법의 Specification을 기술한 라이브러리가 Jakarta Bean Validation 이고 이를 구현한 라이브러리가 바로, Hibernate Validator입니다. 🔆 Specification Java Bean Validation Specifi..
-
[Spring] Springboot Properties 설정파일을 외부에서 가져오자백엔드/Spring 2022. 8. 11. 02:49
🚀 들어가며 보통 개인 프로젝트에서 properties나 yml 파일을 프로젝트 내부에서 관리한다. 이때 로컬 개발기와 개발기 그리고 운영기의 설정파일의 정보가 다르다. 그렇다고 개발기 설정파일, 운영기 설정파일을 Github에 올리면 안되기 때문에, 제거를 해줘야한다. 이를 위해서 착안하여, 프로젝트 외부의 경로에서 설정파일을 가져오는 방식이다. 오픈소스로 Maven Central Repository 등록을 완료하였다. 목표는 OS 별로 경로를 설정할 수도 있고, 추후에는 외부 서버에 있는 설정파일을 읽어들이기 위함에 있다. 🔗 Github Repo https://github.com/rojae/load-prop GitHub - rojae/load-prop: Spring Boot Load Properti..
-
JPA Entity 생성시 Table Character set - UTF8 미설정 이슈백엔드/Spring 2022. 8. 11. 02:20
🚀 들어가며 JPA의 ddl-auto로 생성된 테이블의 Charset이 서버에서 설정해준 인코딩인 utf8과 달랐다. 사실 테스트가 아닌 이상.. ddl-auto로 생성된 ddl을 사용하지 않으면 되는 일이지만 , 이런 이슈가 익숙하지 않기 때문에 기록하는 글이다. (보통 ddl-auto에서 생성된 DDL문을 사용하지 않고, 어느 정도 수정하여 수동으로 테이블들을 생성한다) JPA DDL을 통한 테이블 생성 쿼리 create table TBL_CATEGORY ( id bigint not null auto_increment, createdDate datetime(6), modifiedDate datetime(6), category_name VARCHAR(255) not null, parent_id bigi..
-
[Spring] RestTemplate을 편리하게 사용하자 (샘플 포함)백엔드/Spring 2022. 6. 12. 19:19
🚀 들어가면서 RestTemplate을 구체화하면서, 편리하게 사용할 수 있도록 만들어보고 싶었다. 통신 사이에 AOP를 구현하여, 요청과 응답의 URI, Body, Param, Header를 로깅하는 기능을 할까 하였지만.. RestTemplate에 인터셉터를 추가할 수 있는 함수가 있어서 적절히 사용했다. ⚙️ 소스코드 HttpHeader.java HttpHeader이다. 가변적으로 추가하기 편하게 만들었다. build() 함수를 통해서 호환이 가능한 Apache의 HttpHeaders로 변환이 가능하다. @NoArgsConstructor @AllArgsConstructor public class HttpHeader { private MediaType mediaType; private Map keyV..