Server
-
[Spring] yml 파일 dev, prod, local 환경으로 간단하게 분리하기Server/Spring Boot 2021. 6. 16. 17:52
application.yml dev, prod, local 환경 분리하는 법 이번에 프로젝트를 진행하면서 마무리가 되었을 쯤에 개발, 운영, 로컬 환경으로 분리시키는 작업이 필요했습니다. 그래서 이번 글에서 application.yml을 사용할 때 prod, dev, local로 나눠서 작업하는 법에 대해서 간단하게 알아보겠습니다. 하나의 yml 파일 내에서 ---을 통해서 구분하는 것도 가능하지만 yml 파일이 거대해지다 보니.. 위 처럼 환경마다 파일을 만들어서 총 4개의 yml 파일을 생성하였습니다. application.yml을 보면 위와 같이 맨 위에 공통으로 쓰이는 설정 값들을 놓고, ---을 구분 후에 아래의 prod, dev, local 환경을 분리했습니다. profile 값에 맞는 설정 ..
-
[MyBatis] MyBatis foreach INSERT 성능 테스트 해보기Server/MyBatis 2021. 5. 27. 15:26
MyBatis INSERT 쿼리 성능 테스트 MyBatis에는 foreach 라는 것을 이용해서 Batch Insert를 할 수 있는 기능을 제공해줍니다. 그런데 문득 foreach를 통해서 데이터를 INSERT 하는 것과 한 건씩 여러번 INSERT 하는 성능 차이가 얼마나 날까? 하는 의문점이 생겨 한번 글을 정리해보려 합니다. 당연히 성능은 foreach를 쓰는 것이 빠를 것인데요. 그럼에도 대략이라도 얼마나 차이나는지 한번 알아보겠습니다. 일반 INSERT 쿼리 먼저 위와 같이 for 문을 10000번 반복해서 데이터를 INSERT 해보겠습니다. 누가봐도 비효율적.. 말이 안되는 코드지만 그럼에도 몇초나 걸리는지 한번 실행해보았습니다. 실행해보니 예상했던대로 꽤나 시간이 걸렸는데요. 결과는 아래와..
-
[Spring] Spring Boot로 MongoDB Atlas 사용하는 법Server/Spring Boot 2021. 5. 23. 03:07
Spring Boot에서 MongoDB Atlas 사용하는 법 이번 글에서는 Spring Boot로 MongoDB Atlas를 사용하는 법에 대해서 정리해보려 합니다. 먼저 https://www.mongodb.com/cloud/atlas1 MongoDB Atlas 사이트에 먼저 접속하겠습니다. MongoDB Atlas를 사용하기 위해서는 회원가입을 먼저 해야 합니다. 위에 자기의 정보에 맞게 입력 후에 회원가입을 하겠습니다. 저는 자바를 사용할 것이기 때문에 Java를 선택하고 다음을 누르겠습니다. 무료 버전을 사용할 것이기 때문에 FREE를 선택하고 나머지는 기본 설정대로 두고 만들겠습니다. 그리고 1~3분 정도 기다리면 클러스터가 하나 생성이 됩니다. 생성이 되었다면 Connect를 눌러서 DB Us..
-
[Spring] Spring Boot AWS S3 사진 업로드 하는 법Server/Spring Boot 2021. 5. 3. 16:33
Spring Boot S3 파일 업로드 하는 법 이번 글에서는 Spring으로 AWS S3에 파일 업로드 하는 글을 정리해보겠습니다.(기존에 썼던 글은 잘못되거나 부족한 점이 많아서 이번 기회에 다시 써서 정리해보려 합니다.) AWS S3 Bucket 생성하기 먼저 S3 버킷을 생성합니다. 버킷 이름만 설정한 후에 나머지 설정은 Default 설정 그대로 두고 생성하겠습니다. IAM 사용자 S3 접근 권한 추가 먼저 IAM 사용자를 생성하겠습니다. 그리고 위와 같이 IAM 사용자 생성 후에 S3FullAccess 권한을 추가하겠습니다. Spring Boot 파일 업로드 implementation "com.amazonaws:aws-java-sdk-s3:${awsJavaSdkVersion}" ex) impl..
-
[Spring] Spring에서 Swagger 사용하는 법Server/Spring REST API 2021. 4. 30. 17:24
Spring에서 Swagger 사용하는 법 Swagger는 간단한 설정으로 프로젝트에서 지정한 URL들을 HTML화면으로 확인할 수 있게 해주는 프로젝트입니다. 저 같은 경우는 기존에 Github wiki로 매번 API 명세서를 작성했습니다. 하지만 Swagger를 이용하면 간단한 설정 하나만 하면 API 문서를 자동으로 만들어주기 때문에 상당히 편리하게 이용할 수 있습니다. pom.xml io.springfox springfox-swagger2 2.9.2 io.springfox springfox-swagger-ui 2.9.2 build.gradle compile group: 'io.springfox', name: 'springfox-swagger2', version: '2.5.0' compile gro..
-
[Spring] Bean LifeCycle 이란 무엇일까?Server/Spring 2021. 4. 29. 09:21
빈 생명주기 콜백(Bean LifeCycle) 데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요합니다. 스프링 빈도 위와 같은 원리로 초기화 작업과 종료 작업이 나눠서 진행됩니다. 간단하게 말하면 객체 생성 -> 의존관계 주입이라는 라이프사이클을 가집니다. 즉, 스프링 빈은 의존관계 주입이 다 끝난 다음에야 필요한 데이터를 사용할 수 있는 준비가 완료됩니다. Spring 의존관계 주입 과정 가장 처음에는Spring IoC 컨테이너가 먼저 만들어지는 과정이 일어납니다. 위의 그림은 Spring Boot에서 Component-Scan으로 Bean 등록을 시작하..
-
[Spring] Spring 에서 의존성 주입이란 무엇일까?Server/Spring 2021. 4. 29. 09:15
Spring으로 의존성 주입 하기 저번 글 에서 아래의 코드와 같이 내부에서 의존성을 직접 만드는 것이 아니라 외부에서 의존성을 주입해주는 것에 대해서 알아보았습니다. (저번 글을 안보고 오셨다면 먼저 보고 오시는 것을 추천합니다.) public class Car { private Tire tire; public Car(Tire tire) { this.tire = tire; } } 즉, 내부에서 Tire 의존성을 만들면 Car와 Tire는 강한 결합이 생기고, 외부에서 Tire를 주입해주면 Car와 Tire는 느슨한 결합이 될 수 있습니다. (좀 더 유연한 구조가 되는 것입니다.) 위와 같이 의존성 주입을 직접할 수도 있지만, 스프링에서는 Bean으로만 등록되면 IoC 컨테이너가 의존성 주입을 알아서 해..
-
[NodeJS] nodemailer 모듈을 이용하여 메일 전송하는 법Server/NodeJS 2020. 11. 2. 10:28
이번 글에서는 NodeJS - Express를 이용해서 메일 전송을 하는 법에 대해 정리해보려 한다. nodemailer는 node서버에서 메일을 보낼 수 있는 메일 전송 모듈인데 이것을 이용하려 한다. 프로젝트 세팅 Express 프로젝트이름 ex) Express NodeJS_mailer npm install npm install nodemailer (모듈 설치) 그러면 위와 같이 프로젝트 구조를 볼 수 있을 것이다. (config, mail.js는 필자가 만든 것이다.) 이제 config 폴더와 routes 아래에 mail.js를 만들어보자. 1. config/senderInfo.json 먼저 config 폴더 아래 json형태의 파일을 하나 만들어주자. 해당 파일에는 보내는 이메일, 비밀번호를 입력..