본 포스팅은 백기선님의 스프링과 JPA 기반 웹 애플리케이션 개발 강의를 참고하여 작성하였습니다. 소스 코드는 여기 있습니다. (branch: feature/9) ⚠ Warning: 기존에 프로젝트 생성시 의도했던 것은 multi module 프로젝트를 구성하는 것이었는데 굳이 그렇게 할 필요성을 느끼지 못해 사용하던 패키지명을 수정하였습니다. 이전 포스팅을 따라서 작성하시던 분들이 계시다면 이 점 유의해주시기 바랍니다. Overview 회원 가입 완료(이메일 인증 완료)시 자동 로그인처리가 되도록 합니다. [Spring Security 내에서 로그인을 다루는 방법] SecurityContext - Authentication(Token) UsernamePasswordAuthenticationToken [..
본 포스팅은 백기선님의 스프링과 JPA 기반 웹 애플리케이션 개발 강의를 참고하여 작성하였습니다. 소스 코드는 여기 있습니다. (branch: feature/8) Overview 회원 가입시 전송한 이메일을 확인하여 회원을 인증하는 절차를 개발합니다. 회원 가입시 다시 서버로 요청할 수 있게 토큰을 포함한 링크를 전송하고 사용자가 해당 링크를 클릭했을 때 토큰이 일치하면 가입 완료 처리합니다. 이메일 인증을 하는 이유는 무작위로 생성하는 이메일 계정을 허용하지 않기 위함이고, 서비스 내에서의 메일 전송 기능을 제대로 활용할 수 없기 때문입니다. 이메일 인증을 대체할 수 있는 방법은 소셜 인증 등이 있습니다. 인증 링크로 접근했을 때 노출될 화면과 인증 로직을 개발해야 합니다. 이메일 인증 개발 입력 값에..
본 포스팅은 백기선님의 스프링과 JPA 기반 웹 애플리케이션 개발 강의를 참고하여 작성하였습니다. 소스 코드는 여기 있습니다. (branch: feature/7) Overview 비밀번호를 평문 그대로 저장하는 서비스는 세상 어디에도 없습니다. 특히 전자금융권과 같이 민감한 개인 정보를 다루는 쪽에서는 망을 분리해여 저장하고 접근하기도 합니다. 마찬가지로 지금 개발하는 서비스에도 비밀번호 인코딩 기능을 추가해줘야 합니다. Implementation 스프링 시큐리티에서 권장하는 방법은 PasswordEncoder를 사용하는 것입니다. 사용 방법은 매우 간단합니다. PasswordEncoder를 빈 등록해주면 되는데 직접 사용할 알고리즘을 구현해도 되고 기본값을 사용해도 됩니다. 기본값을 사용할 경우 BCr..
본 포스팅은 백기선님의 스프링과 JPA 기반 웹 애플리케이션 개발 강의를 참고하여 작성하였습니다. 소스 코드는 여기 있습니다. (branch: feature/6) Overview 지금까지 작성한 코드를 리펙터링합니다. 리펙터링 전에 테스트 코드를 작성하면 리펙터링 이후에도 견고한 테스트 코드를 작성했는지 추가로 확인할 수 있습니다. 테스트 할 것을 정의합니다. 회원 가입시 이상한 값이 입력된 경우 다시 회원 가입 화면으로 리다이렉트 하는지 확인 에러가 잘 노출 되는지 확인 회원 가입시 정상적인 값이 입력된 경우 가입한 회원 데이터가 존재하는지 확인 이메일이 보내지는지 확인 리팩터링시 고려해야할 부분입니다. 메서드의 길이 너무 길면 메서드를 나눔 코드 가독성 코드의 위치 객체들 사이의 의존 관계 클래스의 ..
본 포스팅은 백기선님의 스프링과 JPA 기반 웹 애플리케이션 개발 강의를 참고하여 작성하였습니다. 소스 코드는 여기 있습니다. (branch: feature/5) Overview 회원 가입 폼을 검증하는 방법과 회원 가입을 처리하는 방법에 대해 공부합니다. 애너테이션을 이용한 검증과 커스텀 검증을 모두 사용하고, 에러가 있을 경우 회원 가입을 처리하지 않습니다. 모든 값이 유효할 회원 정보를 저장하고, 이메일 정보를 발송한 뒤 홈으로 이동하는 과정까지 개발합니다. Prerequisite Dependencies build.gradle의 dependencies에 spring-boot-starter-validation 패키지를 추가합니다. dependencies { // 생략 implementation 'or..
본 포스팅은 백기선님의 스프링과 JPA 기반 웹 애플리케이션 개발 강의를 참고하여 작성하였습니다. 소스 코드는 여기 있습니다. (branch: feature/4) Overview Bootstrap, Thymeleaf, HTML, CSS를 사용하여 회원 가입 페이지를 작성하고 요청시 보여줍니다. 회원 가입시 받을 수 있는 정보를 폼 객체로 제공합니다. Prerequisite 부트스트랩(Bootstrap) 설정 위 값을 복사해서 sign-up.html 파일의 head 태그 안쪽에 추가하고 title 태그 안쪽의 값을 원하는 제목으로 수정합니다. ... 생략 그리고 body 태그 안쪽에 아래 스크립트를 추가합니다. 위 스크립트는 부트스트랩에서 필요로하는 JS function 들을 사용할 수 있게 해줍니다. 예..
본 포스팅은 백기선님의 스프링과 JPA 기반 웹 애플리케이션 개발 강의를 참고하여 작성하였습니다. 소스 코드는 여기 있습니다. (branch: feature/2) Overview 이번 포스팅에서는 회원 가입, 탈퇴, 로그인 등의 기능을 개발하기 위한 도메인 설계와 이에 해당하는 부분을 구현할 예정입니다. 제작할 웹 애플리케이션은 스터디를 관리하는 웹 입니다. Requirement 스터디 관리를 위해 가장 선행되어야 할 것은 회원을 관리하는 것인데요, 회원과 관련된 필요한 기능을 정리하면 아래와 같습니다. 로그인 프로필 (TMI: 독일어, 프랑스어로 읽으면 프로필, 영어로 읽으면 프로파일 입니다) 알림 위 세 가지 기능을 구현하기 위해 필요한 데이터를 정리해보겠습니다. 로그인 로그인을 하기 위해선 보통 I..
들어가며 원래 저는 인증 모듈을 담당하는 개발자로 현재 회사에 입사하였는데, 어쩌다보니 개발보다는 운영이 많은 부정거래 탐지쪽으로, 그 이후에는 자금세탁 방지를 위한 컴플라이언스 프로젝트를 관리하는 업무로 점점 개발과 멀어지게 되었습니다. 1년 가까이 개발다운 개발을 하지 못하다보니 그 사이 상당히 많은 부분을 까먹었고 가끔씩 시도했던 이직에서도 개발자가 호황(?)인 시기에도 불구하고 좋은 결과를 얻지 못했습니다. 연차는 쌓여가는데 이 연차에 기대하는 역량을 갖췄는지 스스로 계속 의심하게 되었고 실력이 계속 제자리 걸음을 하는 것 같은 기분도 들었습니다. 최근에 새로운 도메인(서비스)에 대해 개발을 할 기회가 생겼고, 처음부터 시작하는 프로젝트이기 때문에 기초부터 한번 훑어야겠다는 생각이 들어 인프런에서..
SpEL (Spring Expression Langauge) 이란? 스프링 표현식은 SpEL로 표기하고 객체 그래프를 조회하고 조작하는 기능을 제공합니다. Unified EL과 비슷하지만 메소드 호출과 문자열 템플릿 기능도 제공합니다. 자바에서 사용할 수 있는 표현식은 여러 가지(OGNL: Object Graph Navigation Language, MVEL: MVFlEX Expression Language, JBOss EL)가 있지만 SpEL은 스프링 프로젝트 내에서 사용할 용도로 만든 표현식입니다. 스프링 3 버전부터 지원하고 있습니다. SpEL을 사용하는 스프링 프로젝트 SpEL은 스프링 프로젝트 전반적으로 모두 사용되지만 가장 비중있게 사용하는 부분은 아래와 같습니다. @Value @Comditi..
Overview 스프링 부트에서 graceful shutdown을 사용하는 방법을 소개합니다. 먼저 graceful shutdown은 애플리케이션 서버 종료시 새로운 요청은 받지 않고 기존 요청을 완전히 처리한 이후 서버를 종료하는 것을 말합니다. 스프링 부트 2.3 이상 버전부터 동작합니다. 참고로 이전 버전에서는 응답을 보내기 전에 서버를 종료했을 경우 클라이언트가 응답을 받지 못합니다. 설정 파일 설정 파일 수정만으로 간단히 해당 기능을 구현할 수 있습니다. 서블릿 기반 MVC와 reactive stream 기반 webflux에서도 동작합니다. 타임아웃 설정도 추가할 수 있습니다. 단, 요청을 처리하는 시간보다 타임아웃으로 설정한 시간이 짧을 경우 클라이언트는 응답을 받을 수 없습니다. 이 경우 g..
- Total
- Today
- Yesterday
- 함께 자라기
- proto3
- 스프링 부트 애플리케이션
- 스프링 데이터 jpa
- Spring Boot Tutorial
- JPA
- @ManyToOne
- r
- Spring Boot JPA
- gRPC
- Spring Boot
- JSON
- 알고리즘
- intellij
- spring boot application
- 스프링 부트 회원 가입
- Linux
- 클린 아키텍처
- 헥사고날 아키텍처
- QueryDSL
- Java
- 스프링 부트 튜토리얼
- 스프링부트
- spring boot app
- spring boot jwt
- Spring Data JPA
- 함께 자라기 후기
- Jackson
- leetcode
- 스프링 부트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |