스프링 프레임워크를 이용해 개발하면서 커스텀 애너테이션을 사용해야할 때가 있습니다. 저는 최근 헥사고날 아키텍처를 적용하면서 어댑터, 유스케이스 등 기존의 @Controller, @Service와 매핑될만한 클래스들에 대해 커스텀 애너테이션을 사용하고 있는데요, 사용할 때 기존 기능을 유지해야하기 때문에 보통 기존 애너테이션을 커스텀 애너테이션에 추가하여 사용합니다. package io.lcalmsky.demo.infrastructure.annotation; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.an..
Overview 스프링 부트에서 사용할 수 있는 설정 값들의 우선 순위를 알아봅니다. 설정 Spring Boot를 사용하면 설정을 외부화(externalize)하여 다른 환경에서 동일한 애플리케이션 코드로 작업할 수 있습니다. 설정의 종류는 다음과 같습니다. 자바 속성 파일(properties) yaml 파일 환경 변수 커맨드 라인 인수(command line argument) 속성 값은 @Value를 통해 주입하거나 Environment 추상 클래스를 통해 접근하거나 @ConfigurationProperties를 이용해 객체에 바인딩 할 수 있습니다. 우선순위 설정 값을 우선순위에 의해 오버라이드하는 방식으로 사용할 수 있습니다. 우선순위는 낮은 순에서 높은 순으로 오버라이드되므로, 공통으로 사용할 값..
본 포스팅은 백기선님의 스프링과 JPA 기반 웹 애플리케이션 개발 강의를 참고하여 작성하였습니다. 소스 코드는 여기 있습니다. (commit hash: 316856a) > git clone https://github.com/lcalmsky/spring-boot-app.git > git checkout 316856a ℹ️ squash merge를 사용해 기존 branch를 삭제하기로 하여 앞으로는 commit hash로 포스팅 시점의 소스 코드를 공유할 예정입니다. Overview 이제 모든 기능이 구현됐으므로 마지막남은 첫 화면을 구현합니다. 로그인 전과 후로 나뉘는데 먼저 로그인하기 전 화면을 구현해보겠습니다. 로그인 전 화면 구현 MainController 수정 첫 화면에 전달할 데이터를 추가해주기 ..
본 포스팅은 백기선님의 스프링과 JPA 기반 웹 애플리케이션 개발 강의를 참고하여 작성하였습니다. 소스 코드는 여기 있습니다. (commit hash: 5937695) > git clone https://github.com/lcalmsky/spring-boot-app.git > git checkout 5937695 ℹ️ squash merge를 사용해 기존 branch를 삭제하기로 하여 앞으로는 commit hash로 포스팅 시점의 소스 코드를 공유할 예정입니다. Overview 스프링 기본 설정을 사용하면 클라이언트가 잘못된 요청을 보냈을 때 404에러 페이지로 자동으로 이동이 되는데요, 이 때 표시할 에러 화면과, 에러 화면을 보여주기 위한 핸들러를 구현합니다. 잘못된 요청의 예는 아래와 같습니다. ..
본 포스팅은 백기선님의 스프링과 JPA 기반 웹 애플리케이션 개발 강의를 참고하여 작성하였습니다. 소스 코드는 여기 있습니다. (commit hash: 85decd6) > git clone https://github.com/lcalmsky/spring-boot-app.git > git checkout 85decd6 ℹ️ squash merge를 사용해 기존 branch를 삭제하기로 하여 앞으로는 commit hash로 포스팅 시점의 소스 코드를 공유할 예정입니다. Overview 검색화면을 개선합니다. 페이지 내비게이션, 정렬 조건 등 기존에 누락된 기능들을 추가합니다. 라이브러리 설치 /src/main/resources/static 경로로 이동하여 mark 라이브러리를 설치합니다. > cd /src/m..
본 포스팅은 백기선님의 스프링과 JPA 기반 웹 애플리케이션 개발 강의를 참고하여 작성하였습니다. 소스 코드는 여기 있습니다. (commit hash: 022e586) > git clone https://github.com/lcalmsky/spring-boot-app.git > git checkout 022e586 ℹ️ squash merge를 사용해 기존 branch를 삭제하기로 하여 앞으로는 commit hash로 포스팅 시점의 소스 코드를 공유할 예정입니다. Overview querydsl에 페이징(Paging)을 적용합니다. 테스트 데이터 생성 직접 랜덤한 값을 이용해 쿼리를 해도 되지만 현 시점에서 더 간단하게 데이터를 추가해주기 위해 Controller와 Service에 기능을 추가해보도록 하..
본 포스팅은 백기선님의 스프링과 JPA 기반 웹 애플리케이션 개발 강의를 참고하여 작성하였습니다. 소스 코드는 여기 있습니다. (commit hash: e7a6ed7) > git clone https://github.com/lcalmsky/spring-boot-app.git > git checkout e7a6ed7 ℹ️ squash merge를 사용해 기존 branch를 삭제하기로 하여 앞으로는 commit hash로 포스팅 시점의 소스 코드를 공유할 예정입니다. Overview querydsl에서 발생하는 n+1 problem을 해결합니다. 해결 방법 left (outer) join fetchJoin을 하기 위해서 첫 번째(left) 테이블에 연관 관계가 있는 모든 데이터를 가져옴 연관 관계가 없으면 ..
본 포스팅은 백기선님의 스프링과 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: 6962e94) > git clone https://github.com/lcalmsky/spring-boot-app.git > git checkout 6962e94 ℹ️ squash merge를 사용해 기존 branch를 삭제하기로 하여 앞으로는 commit hash로 포스팅 시점의 소스 코드를 공유할 예정입니다. Overview 모임 관련 변경사항에 대한 알림 기능을 구현합니다. 지난번 포스팅과 대부분 유사합니다. 알림이 발생해야 하는 상황은 다음과 같습니다. 스터디 수정 추가 알림 새 모임 추가 모임 변경 모임 취소 모임 참가 신청 참가 신청 수락 참..
본 포스팅은 백기선님의 스프링과 JPA 기반 웹 애플리케이션 개발 강의를 참고하여 작성하였습니다. 소스 코드는 여기 있습니다. (commit hash: d68c1ae) > git clone https://github.com/lcalmsky/spring-boot-app.git > git checkout d68c1ae ℹ️ squash merge를 사용해 기존 branch를 삭제하기로 하여 앞으로는 commit hash로 포스팅 시점의 소스 코드를 공유할 예정입니다. Overview 스터디 변경시 알림 기능을 구현합니다. 스터디 공개 때 알림을 보내는 것과 마찬가지로 특정 시점에 이벤트를 발생시키는 방법으로 구현할 수 있습니다. 알림을 전송하는 시점은 다음과 같습니다. 스터디 소개를 업데이트 했을 때 스터디..
- Total
- Today
- Yesterday
- proto3
- Spring Boot Tutorial
- Spring Boot
- JPA
- spring boot jwt
- Linux
- 스프링부트
- 함께 자라기 후기
- 클린 아키텍처
- intellij
- JSON
- 스프링 부트 애플리케이션
- 헥사고날 아키텍처
- gRPC
- 알고리즘
- spring boot application
- r
- Jackson
- 스프링 데이터 jpa
- @ManyToOne
- Spring Data JPA
- Java
- 스프링 부트
- 스프링 부트 튜토리얼
- Spring Boot JPA
- 함께 자라기
- spring boot app
- leetcode
- 스프링 부트 회원 가입
- QueryDSL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |