본 포스팅은 백기선님의 스프링과 JPA 기반 웹 애플리케이션 개발 강의를 참고하여 작성하였습니다. 소스 코드는 여기 있습니다. (commit hash: f39b053) > git clone https://github.com/lcalmsky/spring-boot-app.git > git checkout f39b053 ℹ️ squash merge를 사용해 기존 branch를 삭제하기로 하여 앞으로는 commit hash로 포스팅 시점의 소스 코드를 공유할 예정입니다. Overview 스터디 검색 기능을 구현합니다. 키워드를 입력 받아 스터디를 검색하는데, 스터디 제목, 관심사, 도시 이름이 키워드에 해당합니다. 로그인하지 않고도 사용할 수 있어야 합니다. 검색으로 보여질 내용은 아래와 같습니다. 검색 키워드..
본 포스팅은 백기선님의 스프링과 JPA 기반 웹 애플리케이션 개발 강의를 참고하여 작성하였습니다. 소스 코드는 여기 있습니다. (commit hash: bd04b9d) > git clone https://github.com/lcalmsky/spring-boot-app.git > git checkout bd04b9d ℹ️ squash merge를 사용해 기존 branch를 삭제하기로 하여 앞으로는 commit hash로 포스팅 시점의 소스 코드를 공유할 예정입니다. Overview 스터디 구성원 조회 기능을 구현합니다. 여태까지 계속 해왔던 것이기 때문에 자세한 설명은 생략하겠습니다. 엔드포인트 추가 스터디 조회 화면에서 구성원 메뉴를 클릭했을 때 관련 페이지로 이동하도록 컨트롤러를 수정해줍니다. /src..
본 포스팅은 백기선님의 스프링과 JPA 기반 웹 애플리케이션 개발 강의를 참고하여 작성하였습니다. 소스 코드는 여기 있습니다. (branch: feature/10) Overview 스프링 부트에서 프론트엔드 라이브러리 설정하는 방법을 알아봅니다. NPM (Node Package Manager)을 사용하여 dependency를 관리하고 package.json을 이용해 빌드합니다. Front-end 라이브러리 설정 스프링 부트에서는 src/main/resources/static 디렉토리 하위 디렉토리들을 모두 정적 리소스로 제공합니다. (기본 설정이고 변경할 수 있습니다.) 즉, 어떤 툴을 이용해서든 해당 디렉토리 안에 리소스가 존재하도록 설정하게 되면 라이브러리를 이용할 수 있습니다. 리소스가 존재하게 하..
본 포스팅은 백기선님의 스프링과 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/2) Overview 이번 포스팅에서는 회원 가입, 탈퇴, 로그인 등의 기능을 개발하기 위한 도메인 설계와 이에 해당하는 부분을 구현할 예정입니다. 제작할 웹 애플리케이션은 스터디를 관리하는 웹 입니다. Requirement 스터디 관리를 위해 가장 선행되어야 할 것은 회원을 관리하는 것인데요, 회원과 관련된 필요한 기능을 정리하면 아래와 같습니다. 로그인 프로필 (TMI: 독일어, 프랑스어로 읽으면 프로필, 영어로 읽으면 프로파일 입니다) 알림 위 세 가지 기능을 구현하기 위해 필요한 데이터를 정리해보겠습니다. 로그인 로그인을 하기 위해선 보통 I..
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..
Overview 스프링 부트를 이용하여 도커 이미지를 쉽게 만드는 방법을 소개합니다. 스프링 부트의 계층(layer)중 중복으로 포함되는 계층(라이브러리, 부트 로더 등)을 캐싱하여 효율적으로 도커 이미지를 생성합니다. Spring Boot Version 2.3 이상 build.gradle spring-boot-gradle-plugin dependency 추가 bootJar task에 layered 추가 layered()는 deprecated 되었음 layered(Action action) 사용 권장 dependencies { implementation 'org.springframework.boot:spring-boot-gradle-plugin:2.5.0' } bootJar { layered() } Gr..
- Total
- Today
- Yesterday
- 스프링부트
- QueryDSL
- Spring Boot
- 헥사고날 아키텍처
- 스프링 부트 회원 가입
- r
- Spring Data JPA
- intellij
- 함께 자라기
- Linux
- spring boot jwt
- Java
- leetcode
- Jackson
- Spring Boot JPA
- 스프링 데이터 jpa
- 알고리즘
- 스프링 부트 튜토리얼
- JSON
- spring boot application
- spring boot app
- 스프링 부트
- JPA
- 클린 아키텍처
- @ManyToOne
- 함께 자라기 후기
- proto3
- gRPC
- 스프링 부트 애플리케이션
- Spring Boot Tutorial
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |