본문 바로가기
  • Floodnut's Home Directory

프로그래밍/JAVA4

[SpringBoot] Reason: Validation failed for query for method public abstract ... @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Invocation of init method failed; nested exception is org.springframework.data.repository.query.QueryCreationException: Could not create query for public abstract ... 스프링부트에서 JPA를 활용하다 이런 에러를 종종 마주했다. JPA는 함수 명에 따라 쿼리를 동작시켜주는데 종종 직접 작성한 쿼리가 필요할 때가 있다. /* 에러 발생 어노테이션 */ @Query("___MY_QUERY__") /* 수.. 2022. 6. 9.
[SpringBoot] URL 이미지 반환하기(2) - Redis Caching [SpringBoot] URL 이미지 반환하기 스프링부트를 활용해서 API 서버를 만들면서 이미지가 담긴 URL을 반환해주는 기능이 필요했다. 클라이언트가 서버의 URL로 접근해서 이미지를 요청하면 외부 API의 정적 이미지를 담은 URL을 내 쪽 www.floodnut.com 앞서 구현한 URL 이미지를 캐싱하는 작업을 진행하고자 한다. 우선 캐싱을 진행하고자 한 이유는... 이미지는 외부 API를 통해 요청된다. API 호출 횟수를 줄이기 위해서다. 반복 요청에 대해서 외부 API로의 이미지 요청의 응답 속도를 줄이기 위해서다. 그렇다면 NoSQL인 Redis를 선택한 이유는? Key-Value를 통해 원하는 이미지만 빠르게 반환하기 위해서다. 여러 이미지를 반환한다면 RDBMS가 더 유리할 수도 있.. 2022. 5. 16.
[JAVA] 입출력 우리가 자바를 통해서 일반적으로 입출력을 처리하는 방법에 대해서 알아본다. 파이썬의 경우 sys.stdin.readline(), input(), map(), split() 등을 이용하는 것처럼 여러가지의 경우를 정리할 것이다. 추가 내용이 있을 경우 업데이트 예정 일반적인 입출력 import java.io.*; import java.util.*; public class Main { public static void main(String[] args){ /* 입력 */ Scanner sc = new Scanner(System.in); int n = Integer.parseInt(sc.nextLine()); /* 출력 */ System.out.println(n); } } Scanner와 표준 출력을 활용한 .. 2022. 4. 25.
[SpringBoot] URL 이미지 반환하기 스프링부트를 활용해서 API 서버를 만들면서 이미지가 담긴 URL을 반환해주는 기능이 필요했다. 클라이언트가 서버의 URL로 접근해서 이미지를 요청하면 외부 API의 정적 이미지를 담은 URL을 내 쪽으로 끌고와서 해당 URL의 이미지를 내 서버의 URL로 접근할 수 있도록 해야했다. 외부 API에 직접 접근하면서 생기는 두 가지 문제점을 해결하고 싶었다. API키가 노출되는 점 URL 길이가 길어지는 점 위 두 개의 문제점을 해결하기 위해서 다음과 같은 방법을 생각했다. 외부 API URL에 접근해서 이미지만 객체 또는 바이트 배열로 받아오기 해당 이미지 객체를 바이트 배열로 반환하기 우선 아래와 같은 클래스와 함수를 만들었다. 파라미터로 전달되는 값들을 통해 URL을 구성하고 이를 통해서 URL 객체.. 2022. 4. 25.