백엔드
-
[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..
-
[ASP.NET] 난 결국 닷넷을 알아야만 했다.백엔드/ASP.NET 2022. 10. 2. 06:25
이직각을 잡고 옮긴 회사의 기존 시스템이 ASP.NET이다. 이걸 자바 기반으로 컨버팅을 한다고 한다. 현재의 나는 닷넷을 아예 모른다.. 프로젝트 구조 조차도 모르기 때문에 IIS 서버, .NET, ASP.NET 등등 공부를 해야하는 상황이다. 결국 Udemy 강의를 끊어서, 늦은 시간에 하나 들었다. 자바 스프링 프레임워크를, 그래도 좀 해왔어서인가? 그나마 이해가 빠랐다. 나름 신선하고, 재미는 있는 것 같다. (스프링이랑 비교하면서 공부..) 하다보면, 해외의 닷넷 개발자들이 왜 자바를 욕하는지 느낄 수 있지 않을까? 우선.. 천천히 코드리딩이 될 정도로 학습하고, 이후 자바 기반으로 Webflux, Reactive 프로그래밍을 공부해야겠다. 🔆 참고 이번에 처음 알았는데.. 한국 분도 유데미에서..
-
[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..
-
[Bash] 포트 상태를 확인하자백엔드/Shell 2022. 7. 8. 12:51
🚀 들어가며... 특정 포트에 접속 중인 클라이언트를 감지할 수 있는 기능이 필요하여 개발하였습니다. 매우 단순하여 개인적으로 재사용하기 편하게 블로그에 작성합니다. 💌 소스코드 state.sh #!/bin/bash if [ -z $1 ] then echo "No Parameter Listen Port" exit fi while true do sleep 1 netstat -na | grep $1 | grep -v LISTEN done 📑 사용법 간단한 쉘을 만들어서, 포트에 접속 중인 클라이언트를 1초 간격으로 확인이 가능하다. sh state.sh 2022 🔗 참고 netstat 상태는 아래와 같다. LISTEN - 포트가 열려있는 상태.. 연결을 기다리고 있음 SYS-SENT – 연결을 요청한 상태 ..