목록Language & Framework (34)
고딩왕 코범석
안녕하세요! 이번 포스팅에서는 제가 어떻게 서비스 레이어를 분리했는지 포스팅해보았습니다. 그럼 바로 가보시죠! 기존의 코드 우선, 제 프로젝트의 서비스 레이어에서는 흔히 스프링 예제에 돌아다니는 것처럼 DomainService, DomainServiceImpl로 명명했습니다. 그에 따라 모든 비즈니스 로직들이 서비스 인터페이스에 모두 담겨져있었고 그걸 구현해서 로직을 작성했습니다. // Account > 회원 도메인 // 모든 비즈니스 로직들이 다 담겨있는 구조 public interface AccountService { SignUp.Response signUp(SignUp.CommonRequest signUpRequestDto); Account saveAccount(SignUp.CommonRequest..
안녕하세요! 이번시간에는 비동기 이벤트 로직을 테스트하는 방법에 대해 알아볼까 합니다. 제가 진행하고 있는 프로젝트에서 회원가입시, 인증 메일을 보내는 기능을 구현해야했습니다. 예전 스터디올레를 클론코딩하면서 비동기 방식을 스프링에서는 어떻게 구현하는지 공부해서 그렇게 어렵지 않았고, 그럼에도 불구하고 구글링해가면서 알아봤습니다... 구현 예제들을 쉽게 찾을 수 있었습니다. 하지만... 이 부분을 테스트하는 방법을 알기 쉽지 않았습니다. 다들 테스트하는 방법이 서버를 올린 다음, 해당 로직이 잘 동작하는지 하는 테스트가 전부였어요. 그러다 구글링을 해보고, docs를 참조한 결과 테스트하는 방법을 알게 되었습니다! 우선, 저의 프로젝트에서 회원가입 및 인증메일을 보내는 과정을 그림으로 표현해보겠습니다. ..
안녕하세요 이번 시간에는 데어프로그래밍 님의 jwt 강의를 듣고 공부한 내용을 정리하기 위한 포스팅입니다. 그럼 바로 시작할게요! 짚고 넘어갈 개념 Filter 시큐리티는 우선 필터체인 방식으로 동작합니다. 기존의 시큐리티 프로젝트와는 다르게 formLogin과 httpBasic을 disable합니다. 1. formLogin을 사용하지 않는 이유 form으로 로그인 하는 경우는 javascript로 서버에 id, pw를 요청합니다.. 이 때, javascript로 요청할 경우 서버에 클라이언트가 갖고 있는 쿠키를 전송하지 못하는데요. 대부분의 서버는 httpOnly값이 true로 설정되어 있기 때문이죠. 하지만 false로 허용을 한다면 javascript로 요청시 보안 상 좋지 않기 때문에 formLo..
안녕하세요! 이번 포스팅에서는 데어 프로그래밍님 유튜브에서 Security파트 강의를 듣고 학습한 내용을 포스팅하겠습니다. 항상 피드백은 환영하구 바로 시작하겠습니다! 미리 말씀드리지만 시큐리티의 구조와 동작원리는 다른 분들이 자세하게 설명하셨기에 저의 포스팅에서는 바로 적용하는 것 부터 살펴볼게요! Spring Security? 스프링 시큐리티란, 스프링 기반의 애플리케이션 보안(인증과 권한)을 담당하는 프레임워크 입니다. 시큐리티를 사용할 경우, 보안과 관련해서 체계적으로 많은 옵션들로 부터 도움을 받을 수 있습니다. 참고로 시큐리티는 filter 기반으로 동작하기에, spring mvc와 분리되어 동작합니다! 시큐리티를 설명하기 앞서 보안관련 용어부터 정리해보겠습니다. 보안관련 용어 정리 접근 주체..
안녕하세요! 오늘은 제가 "스프링과 JPA 기반 웹 애플리케이션 개발"을 클론코딩하면서 보았던 비동기 개념에 대해 배우고 정리해보겠습니다. 우선, 저는 동기와 비동기, 블로킹과 논블로킹이라는 것에 대해 좀 생소했었는데, 여기를 통해 개념이 좀 많이 잡혔습니다. 제가 이 네가지 개념에 대해 작성하는 것 보다는 참조하는 것이 훨씬 여러분들께 도움이 될 것 같아 저 링크를 참조하시면 될 것 같습니다. 이제 위 네가지 개념에 대해 알았다면, 본격적으로 실습해보겠습니다. 저는 이 게시글을 참조해서 작성했습니다. 제 설명이 부족하다면 해당 게시글을 참조하시면 될 것 같습니다. Configuration 스프링에서 비동기 작업을 하기 위해서는 Configuration을 등록해주어야 합니다. @Configuration ..
안녕하세요! 오늘은 제가 "스프링과 JPA 기반 웹 애플리케이션 개발"을 클론코딩하면서 보았던 ResponseEntity에 대해 배우고 정리해볼까 합니다. 우선, 저는 RestController에서 도메인 객체를 DTO로 변환해서 반환했습니다. 하지만 단순히 값만 보내는 것이 아닌 헤더, 바디, 상태 코드도 같이 보내줘야 하는 세심함도 알아야 진짜 백엔드 개발자 나는 가짜개발자! 악! 라고 생각하여 이번 기회에 공부하게 되었습니다. 부정확한 정보가 있을 경우에는 항상 댓글을 부탁드리겠습니다. 그럼 시작할게요! 참고로 저는 이 포스팅을 참조해서 작성했습니다. ResponseEntity? Spring에서 제공하는 클래스 중 HttpEntity라는 클래스가 존재합니다. 이것은 HTTP 요청 또는 응답에 해당하..
최근 스프링 프로젝트 공식 예제인 펫클리닉을 클론코딩 해보았습니다. 그리고 펫클리닉 기능들의 테스트 로직을 작성하며 얻었던 지식을 정리해보았습니다. 저는 국비지원 교육과정에서 프로젝트를 두번 진행한 경험이 있는데, 그 때 마다 테스트는 작성하지 않고 서버를 띄워 값이 정확히 들어왔는지 확인하는 방식으로 진행했습니다. 이후, 혼자 공부하면서 테스트에 대한 중요성을 알게 되었고, 펫클리닉을 기반으로 테스트를 어떻게 작성해야 하는지, 계층별로 확인해야 할 것들은 무엇인지 정리해보았습니다. 만약 포스팅에 틀린 설명이 있다면 꼭 피드백해주시면 고맙겠습니다. JUnit 먼저 Java는 JUnit으로 테스트를 작성합니다. 프로젝트의 Test class들을 그대로 남김으로써 추후 개발자에게 테스트 방법 및 클래스의 h..
오늘은 트랜잭션에 대해 정리해보자 왜 정리하려는건데? 며칠 전 면접을 볼 때 면접관님께서 내 프로젝트에 관한 질문을 하셨다. "왜 비즈니스 로직을 컨트롤러에 담으셨어요?" (만약 취업을 위해 국비지원 학원을 알아보시는 분들 꼭 잘 조사하고 가세요... 강사한테 지식 잘못 배우면 향후 여파가 커집니다!) 젠장... 학원 수료하고 따로 스프링에 대해서 공부했는데 비즈니스 로직은 @Service에 작성하는게 맞더라... "그렇다면 트랜잭션으로 로직을 처리할 때 장단점이 뭐가 있을까요?" 고딩좌 킹범짱 : "단점은 아무래도 잘못된 로직이 있을 경우에는 데이터베이스에 반영되지 않습니다!"(아주 자신있게) "그건 장점아닌가요??" 꿀먹은 고딩좌 킹범짱 : ......(정식 면접이 끝난 후 질문했다.) @Transa..