목록Language & Framework/Spring (27)
고딩왕 코범석
외부의 다른 서비스들이 마이크로 서비스를 검색하기 위한 개념 Key, Value로 저장된다고 가정할 때 Key Value 서비스 명들... 서비스의 위치들... 각각의 마이크로서비스가 어디에 누가 저장되어있는지, 요청 정보에 따라 서비스의 위치를 알려주는 역할이다. 스프링에서는 Spring Cloud Netflix Eureka가 있다. 클라이언트가 요청한 것을 load balancer나 api gateway로 전달되고, 요청 정보가 서비스 디스커버리에 전달되어 필요한 서비스가 어디있는지 확인한 후, 해당 마이크로 서비스에 전달한다. @EnableEurekaServer @SpringBootApplication을 실행시킴 서버의 자격으로 등록을 해주는 @EnableEurekaServer. 메인 메서드 실행 ..
안녕하세요! 이번 포스팅에서는 제가 어떻게 서비스 레이어를 분리했는지 포스팅해보았습니다. 그럼 바로 가보시죠! 기존의 코드 우선, 제 프로젝트의 서비스 레이어에서는 흔히 스프링 예제에 돌아다니는 것처럼 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..