개요 Amazon S3는 서버리스 오브젝트 저장소 상품이다. 이번 글에서는 Spring Boot 기반 애플리케이션에서 Amazon S3에 파일을 업로드하고 다운로드하는 방법을 설명하고자 한다. 사전 조건 Amazon S3를 제어할 수 있는 IAM 사용자 계정이 생성되어 있어야 한다. Amazon S3 비공개 버킷 생성 아래는 Amazon S3의 비공개 버킷을 생성하는 예이다. (이름 그대로 비공개 버킷은 외부에서 접근이 불가능하다.) Amazon S3 콘솔 접속 → [버킷 만들기] 클릭 # 버킷 만들기 → 버킷 이름: foobar-dev (입력) → AWS 리전: [아시아 태평양(서울) ap-northeast-2] 선택 # 이 버킷의 퍼블릭 액세스 차단 설정 → [모든 퍼블릭 액세스 차단] 체크 (기본값..
개요 클라이언트로부의 요청 정보를 담은 HttpServletRequest 객체에는 요청 바디를 반환하는 getInputStream() 메써드가 존재한다. 하지만 이 메써드는 최초 1회 호출 후에는 재호출시 java.io.IOException: Stream closed. 예외를 발생시킨다. 일반적인 상황에서는 문제가 없지만 로깅 등의 목적으로 요청 바디를 획득하고자 할 경우 접근이 불가능한 문제가 발생한다. 이 경우 getInputStream()을 재호출이 가능한 별도의 커스텀 HttpServletRequest를 제작해야 한다. 요청 바디의 재접근이 가능한 HttpServletRequest 작성 요청 바디의 재접근이 가능한 커스텀 HttpServletRequest 클래스를 아래와 같이 작성한다. (소스 코..
개요 Sphinx(스핑크스)는 C++ 기반의 무료 오픈 소스 풀텍스트 검색 서버이다. Sphinx의 장점은 쉬운 설치와 사용법에 있다. 특히, 애플리케이션 입장에서는 기존의 MySQL/MariaDB와 동일한 방법으로 스핑크스에 연결하여 SQL과 유사한 쿼리로 인덱스에 대한 CRUD를 수행할 수 있어 매우 편리하다. (이러한 접근 방식을 SphinxQL이라 부른다.) Sphinx 3 설치 아래는 CentOS 7 운영체제에 Sphinx 3(2020-01-31에 공개된 3.2.1 기준)를 설치하는 예이다. 가장 먼저 로컬에 위치한 Sphinx에서 MySQL/MariaDB 원격 서버에 연결하기 위한 클라이언트를 설치할 차례이다. ### 인덱스 대상이 되는 MySQL/MariaDB 원격 서버에 연결하기 위한 클라..
개요 물리적으로 서로 다른 데이터베이스인데, 테이블 스키마는 완전히 동일하게 적용하여 운영 중인 2개의 레거시 애플리케이션이 있다고 가정하자. 이러한 2개의 서로 다른 데이터베이스를 한 애플리케이션에서 JPA를 이용하여 동시에 접근해야할 경우, 코드 중복을 최소화하는 방법을 고민하고 정리하였다. 사전지식 Spring Boot 환경에서 JPA를 적용하는 방법은 본 블로그의 이 글을 참고한다. @MappedSuperClass 적용 @MappedSuperClass은 테이블 구조에 있어 많은 컬럼을 공통적으로 공유하면서 부분적으로 다른 컬럼이 존재하는 서로 다른 테이블을 엔티티로 구현하기 위해 고안된 JPA 어노테이션이다. 따라서 완전히 동일한 구조의 서로 다른 테이블에도 적용할 수 있다. 적용 예는 아래와 같..
- Total
- Today
- Yesterday
- 알뜰폰
- node.js
- kotlin
- jsp
- Kendo UI Web Grid
- CentOS
- maven
- 구동계
- 자전거
- Docker
- DynamoDB
- bootstrap
- chrome
- java
- 로드 바이크
- 로드바이크
- 태그를 입력해 주세요.
- 평속
- Spring Boot
- jstl
- Tomcat
- Spring MVC 3
- Kendo UI
- Eclipse
- jpa
- JHipster
- JavaScript
- graylog
- MySQL
- spring
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |