JPA를 이용해 간편하게 메서드 네이밍을 사용하던 중 문제가 발생했다 A and (B or C)를 찾는 메서드를 만들어야 하는데 어렵다... 사실 그냥 쿼리를 만들면 쉽긴 하다만JPA메서드네이밍만으로 할 수 있을 것 같아서 도전해 봤다 Page findAllByProductCategories_Category_CategoryIdAndNameContainsOrProductCategories_Category_CategoryIdAndBrandContains(long categoryId1, String name, long categoryId2, String brand, Pageable pageable); ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 만들고 보니 어이가 없다 ㅋㅋㅋ 그래도 약간의 ..
캐시 사용 서버의 부담을 줄이고 성능을 높이기 위해 사용되는 기술 DB에서 조회하는 게 오래 걸리는 작업에 적용하여 해당 결과값을 저장해 두고 가져옴으로써 빠르게 처리가 가능해짐 동일한 결과값이 매번 자주 호출되는 작업에 적용하면 유리하다 -> 결과값이 매번 다른 작업에 적용한다면 캐시를 확인하는 작업으로 인한 부하가 생겨 성능이 오히려 떨어질 수 있으니 주의하여 사용한다 Spring Cache (@Cacheable) 간단 사용법 1. gradle 종속성 추가 implementation 'org.springframework.boot:spring-boot-starter-cache' 2. @EnableCaching 설정 캐시 기능을 사용할 애플리케이션에 @EnableCaching 어노테이션을 붙여준다 @Sp..
Github Actions를 이용하여 EC2, Linode 등 ubuntu 서버에 자동배포를 알아보겠습니다. 우선 본인의 서버 pc에 접속하여 기본적인 세팅을 해줍시다. sudo apt update # 각자 원하는 버전을 설치하시면 됩니다 sudo apt install openjdk-11-jre-headless 서버에서 사용할 포트도 열어줍니다 EC2 -> 보안탭의 인바운드 규칙 수정 Linode -> firewalld 를 사용하여 포트 개방 (기본적으로 열려있음) 자동배포할 프로젝트 레포지토리로 이동하여 Settings - Actions - Runners - New self-hosted runner로 이동합니다 운영 체제에 맞게 선택해주시고 표시한곳까지 서버 터미널에 명령어들을 차례로 입력해 줍니다. ..
클라이언트 측에서 Header에 Jwt 토큰을 실어 보내면 해당 정보를 볼 수 있는 방법을 간단하게 알아보겠습니다. 커스텀 애너테이션 @Login이라는 커스텀 애너테이션을 만들어서 UserDetails 객체에 받아온다 @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.PARAMETER) @AuthenticationPrincipal public @interface Login { } @GetMapping public void getJwtEmailTest(@Login UserDetails userDetails) { System.out.println("@Login : " + userDetails.getUsername()); } @AuthenticationPrin..
개발을 하다 보면 로컬 환경, 개발환경, 운영환경 등 다양하게 구분하여 사용합니다. 이를 간단하게 관리하는 방법을 알아보겠습니다. // application.properties의 경우도 동일한 방식으로 설정이 가능합니다. 1. application-{이름}.yml 만들어주기 예를 들어 로컬 환경이면 application-local.yml 실제 운영 환경이면 application-prod.yml 등 필요한 여러 방식들을 만들어 줍니다 2. 각 환경에 맞는 설정하기 공통적인 설정들은 application.yml에 모두 해주고 각 환경별로 다른 부분만 해당 파일에 설정을 해주시면 됩니다. 알아보기 쉽게 7777로 해봤습니다. 3. 사용할 환경 입력해주기 application.yml 에서 사용할 환경을 입력하고..
로컬 환경에서 인증서를 생성하고, 인증서를 이용하여 HTTPS 서버를 만들어 보자 ✔️ 인증서 발급 자바는 두 가지의 인증서 형식을 지원한다 PKCS12 (Public Key Cryptographic Standard #12) : 여러 인증서와 키를 포함할 수 있으며, 암호로 보호된 형식 (업계에서 널리 사용됨) JKS (Java KeyStore) : PKCS12와 유사하다. 독점 형식이며, Java 환경으로 제한된다. ✅ macOS 기준, Homebrew를 이용하여 인증서를 발급받을 수 있다 # mkcert를 설치한다. $ brew install mkcert # firefox를 사용할 경우 필요에 따라 설치해주세요. $ brew install nss ✅ 인증서 생성 로컬을 인증된 발급기관으로 추가한다. ..
로컬 개발환경과 서버 환경을 따로 Profile을 설정해보자 프로젝트 폴더 내의 src/main/resources 에 보면 application.properties 라는 파일에서 Profile을 설정하는데 본인은 .yml 형식을 선호하므로 application.yml 형식으로 바꾸어 주었다. (뭐로 사용하든 관계없음) 사진과 같이 복사해서 2개의 파일을 더 만들어 준다. local 이라고 되어있는 파일에는 로컬 개발환경의 profile을 설정해주고 # 예시) 로컬 환경에서 사용하는 정보들은 application-local.yml 파일에 설정 spring: h2: console: enabled: true path: /h2 datasource: url: jdbc:h2:mem:test jpa: hibernat..