오늘의 기록
[Spring] SpringBatch를 사용해 csv 파일 읽어 DB에 저장
프로젝트 폴더에 있는 csv 파일을 읽어 적절한 엔티티 형태로 바꿔 DB에 저장하는 방법을 알아보자. Spring Batch 배치(Batch)는 일괄처리 란 뜻을 가지고 있다. 만약 대용량의 파일을 DB에 저장하는 기능이 필요하다고 가정해보자. 이렇게 큰 데이터를 읽고, 가공하고, 저장한다면 해당 서버는 순식간에 CPU, I/O 등의 자원을 다써버릴 것이다. 그리고 이 집계 기능은 하루에 1번 수행된다. 이를 위해 API를 구성하는 것은 너무 낭비가 아닐까? 바로 이런 단발성으로 대용량의 데이터를 처리하는 애플리케이션을 배치 애플리케이션이라고 한다. 스프링에서는 Spring Batch를 통해 배치 애플리케이션을 사용할 수 있다. 이해를 돕기 위해 대용량의 csv 파일(food.csv)을 읽어 DB에 저장..
[Spring] AWS S3, csv 파일 읽어서 DB에 저장
프로젝트 중 AWS S3에서 특정 버킷의 파일을 읽어 DB에 저장해야 하는 상황이 생겨 기록을 한다. build.gradle - 의존성 추가 dependencies { ... implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE' ... } spring boot와 aws를 연동시키기 위해 build.gradle에 spring-cloud-starter-aws를 추가한다. application.yml - aws 자격 정보 입력 cloud: aws: credentials: instance-profile: false access-key: {IAM MY_ACCESS_KEY 입력} secret-key: {IAM MY_SECE..
![[Spring] AWS S3에서 Spring Boot로 파일 다운로드](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9FHWP%2FbtrbhYrMvz1%2F7y9E3892XfYHQbndW9IPR1%2Fimg.png)
[Spring] AWS S3에서 Spring Boot로 파일 다운로드
프로젝트 중 AWS S3에서 특정 버킷의 파일을 다운로드 받아야 하는 상황이 생겨 기록을 한다. build.gradle - 의존성 추가 dependencies { ... implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE' ... } spring boot와 aws를 연동시키기 위해 build.gradle에 spring-cloud-starter-aws를 추가한다. application.yml - aws 자격 정보 입력 cloud: aws: credentials: instance-profile: false access-key: {IAM MY_ACCESS_KEY 입력} secret-key: {IAM MY_SECERT_..
[Java] 인터페이스
https://github.com/whiteship/live-study whiteship/live-study 온라인 스터디. Contribute to whiteship/live-study development by creating an account on GitHub. github.com 백기선님 자바 기초 스터디 8주차 목표 자바의 인터페이스에 대해 학습하세요. 학습할 것 인터페이스 정의하는 방법 인터페이스 구현하는 방법 인터페이스 레퍼런스를 통해 구현체를 사용하는 방법 인터페이스 상속 인터페이스의 기본 메소드 (Default Method), 자바 8 인터페이스의 static 메소드, 자바 8 인터페이스의 private 메소드, 자바 9 인터페이스 정의하는 방법 인터페이스는 추상클래스처럼 추상메서드를 ..
![[Java] 패키지](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGsjfQ%2Fbtq97l9MYYJ%2FK42MhYNnsVkEmcCszn8y7k%2Fimg.png)
[Java] 패키지
https://github.com/whiteship/live-study whiteship/live-study 온라인 스터디. Contribute to whiteship/live-study development by creating an account on GitHub. github.com 백기선님 자바 기초 스터디 7주차 목표 자바의 패키지에 대해 학습하세요. 학습할 것 (필수) package 키워드 import 키워드 클래스패스 CLASSPATH 환경변수 -classpath 옵션 접근지시자 package 키워드 패키지(package) 패키지는 클래스의 묶음이다. 서로 관련된 클래스끼리 그룹 단위로 묶어 놓음으로써 클래스를 효율적으로 관리할 수 있다. 클래스가 물리적으로 하나의 클래스파일(.class)인..
![[Spring] Jasypt를 이용한 암호화](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqMiP0%2Fbtq99m0l5AY%2FhcC4j3AvSXGW8gBTs3Kpkk%2Fimg.png)
[Spring] Jasypt를 이용한 암호화
Jasypt는 자바에서 암호화를 쉽게 할 수 있도록 도와주는 라이브러리이다. When? Spring에서 datasource를 연동할 때, application.yml 파일에 다음과 같이 설정할 수 있다. spring: datasource: url: jdbc:mysql://... username: user123 password: pass123 driver-class-name: com.mysql.cj.jdbc.Driver 이 때, password: pass123과 같이 외부에 노출되면 안되는 정보이다. 특히 깃허브같은 원격 저장소에 등록할 때는 더욱 주의해야 한다. 이와 같이 특정 프로퍼티에 대한 암호화가 필요할 때, Jasypt를 사용할 수 있다. How? gradle project 기준 implement..
![[Intellij] 환경 변수 등록](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuWjus%2Fbtq97lOCE1q%2FerD3bXaSMJ6koyHYgfvVD0%2Fimg.png)
[Intellij] 환경 변수 등록
인텔리제이에서 시스템 환경 변수를 사용하고 싶어서 export PASSWORD=1234 이렇게 로컬에 환경 변수를 지정하고 System.getenv("PASSWORD") 이렇게 환경 변수를 꺼내서 사용하면 된다는데... 나의 경우는 되지 않았다. 방법이 없나 찾아보니, 인텔리제이 자체에서 환경 변수를 제공하는 것을 알게 되었다. 인텔리제이 터미널을 키고 "env"를 입력해보자. env PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin __CFBundleIdentifier=com.jetbrains.intellij SHELL=/bin/zsh SECURITYSESSIONID=186b7 TERM=xterm-256color ... 이렇게 무슨무슨 jetbrains.intel..
![[Intellij] 디버그](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbHlUC%2Fbtq9rc6KdSi%2FZA8nueNsKRQPOsPHpKClo1%2Fimg.png)
[Intellij] 디버그
Intellij에서 유용한 디버그 기능에 대해 알아보겠다. 다음 디버그 방식을 알아두면 Intellij 뿐만 아니라 Jetbrain사의 여러 IDE 혹은 그 밖의 IDE에서 유용하게 활용할 수 있을 것이다. 디버그는 기본적으로 "break point"라는 고정점을 사용한다. 이렇게 고정점을 추가하면(해당 라인을 클릭하면 된다), 디버그 시 고정점에 해당하는 라인 바로 직전까지 실행된 상황을 아래와 같이 보여주게 된다. 1. 왼쪽 블록은 고정점 직전까지의 콜 스택 상황을 파악할 수 있고, 2. 오른쪽 블록은 고정점 직전 까지의 변수와 그에 대한 값을 확인할 수 있다. 앞서 설명한 두 뷰가 오류를 찾아내거나 코드 구조를 파악하기 위한 디버그의 메인 기능이다. 따라서 디버그는 나의 코드 뿐만 아니라 다른 사람..