스프링 5

[spring boot] Async 비동기 메소드 사용하기

💡 들어가며 Spring boot 프레임워크를 이용한 rest api 서버에 FCM을 이용한 푸시알림 서비스, 이메일 인증 서비스를 구현하게 되었는데 앞서말한 2가지 기능처럼 외부 api 통신 등의 네트워크를 이용하면 꽤 긴 딜레이가 발생한다는걸 알게 되었습니다. 이와같은 딜레이를 어떻게 제거할까 고민해보았는데요, 곰곰히 생각해보니 푸시알림이나 이메일 전송등을 호출하는 로직은 해당 api의 핵심로직이 아니고 단순 알림을 위한 기능이였으므로 일단 api호출에 대한 응답을 먼저 넘기고, 스프링이 알아서 이메일을 보내든 푸시알림을 보내든 다른기능을 하도록 할 수 없을까? 하는 생각이 들어 방법을 알아보던중 비동기로 메소드를 실행할 수 있다는것을 알게 되었고 구현해보았습니다. 🤔 근데 비동기가 뭐지? 비동기..

[Spring]Jenkins로 ec2 서버에 원격 배포하기 (publish over ssh 없이)

Jenkins - github 연동이 완료되었다고 가정합니다! 참고: Jenkins github와 연동하기 : https://goddaehee.tistory.com/258 (갓대희님 블로그) 기존 원격으로 ec2 서버에 jenkins로 빌드한 jar 파일을 배포하는 방법인 publish over ssh플러그인이 젠킨스 보안정책상 배포 중단되었습니다. (22.01.12) https://www.jenkins.io/security/advisory/2022-01-12/ Jenkins Security Advisory 2022-01-12 Jenkins Security Advisory 2022-01-12 This advisory announces vulnerabilities in the following Jenkin..

[Spring] 예외 발생은 어디서 해야할까?

스프링에서 예외발생은 어느 계층에서 이루어져야할까? Controller? Service? Repository? ... 결론부터 말하자면 모든 계층에서 발생할 수 있다. 단, 예외의 유형을 정의하는것은 바람직하다. 가령 권한(401)에 대한 검증은 컨트롤러, 유효성(404)에 대한 검증은 서비스 처럼 말이다. 객체지향적 관점으로 봤을 때 해당 클래스가 객체로써 올바르게 작동할 수있는가? 를 따져보아 개발자가 직접 선택하면 된다. Question.만약 권한에 대한 검증을 서비스에서 한다면? Answer. 권한에 대한 검증을 서비스에서 진행한다면 해당 서비스를 다른 컨트롤러 또는 서비스에서 이용함에 있어 권한문제를 통과하지 못할 수 있다는 불확실성이 생긴다. 반드시 권한이 있는 유저가 그 서비스 메소드를 호출..

[Spring] 페이지 리로드(새로고침)시 발생하는 데이터 중복전송 현상 방지

문제확인 웹페이지를 이용하다보면 서버에 데이터가 중복으로 전송되는 현상이 발생한다. 예로 로그인 실패 직후 새로고침을 하면 이전에 진행된 데이터 전송 프로세스가 반복돼서 실행되며 이로인해 불필요한 연산이 진행되고, 뷰로 로그인 실패에 관한 정보를 다시 전송하게된다. (로그인 실패 → 잘못된 아이디 입력 alert표시 → 새로고침 → 다시 잘못된 아이디 입력 alert ... ) 원리 이러한 현상을 어떻게 방지할지 고민하다가 새로고침시 호출되는 컨트롤러(핸들러)는 최종으로 리다이렉트된 컨트롤러임을 알게되었고, 이 작동방식을 이용해 문제를 해결하였다. 실행 이를 위해선 최초 데이터 수신 컨트롤러와 리다이렉트 이후 뷰로 데이터를 전송하는 컨트롤러를 구분하였다. 1. 데이터 수신 컨트롤러 @PostMapping..

[Spring] 스프링(Spring) 이란?

웹(Web)이라는 분야를 공부하기로 결정하고 학습 루트를 탐색하다보면 가장 많이 나오는 키워드중 하나는 스프링이다. 물론 요즘에는 스프링 이외에도 노드js(Node,js) 자식뻘인 스프링부트 등 다양한 프레임워크가 존재하지만, 아직까지 인기있는 현역 프레임워크라는 사실은 틀림없다. 01. 스프링이란? "스프링은 웹사이트 개발을 위한 백엔드 프레임워크이다" 백엔드 (Back-end): 웹 개발 프로세스를 프론트(Front-end), 백엔드(Back-end)로 구분하는데, 일반적으로 서버단에서 동작하는 프로그램(DB, API서버 ..)을 다루는 프로세스를 백엔드 라고 한다. 프레임워크 (Framework): 프로그램 설계에 있어 미리 구축되어있는 뼈대 라고 이해하면 쉽다. 백엔드 프로세스를 구축하는데 있어 ..

반응형