스프링과 JPA 기반 웹 애플리케이션 개발 #48 PostgreSQL 설치 및 설정

Jake Seo·2021년 6월 11일
0

스프링과 JPA 기반 웹 애플리케이션 개발 #48 PostgreSQL 설치 및 설정

해당 내용은 인프런, 스프링과 JPA 기반 웹 애플리케이션 개발의 강의 내용을 바탕으로 작성된 내용입니다.

강의를 학습하며 요약한 내용을 출처를 표기하고 블로깅 또는 문서로 공개하는 것을 허용합니다 라는 원칙 하에 요약 내용을 공개합니다. 출처는 위에 언급되어있듯, 인프런, 스프링과 JPA 기반 웹 애플리케이션 개발입니다.

제가 학습한 소스코드는 https://github.com/n00nietzsche/jakestudy_webapp 에 지속적으로 업로드 됩니다. 매 커밋 메세지에 강의의 어디 부분까지 진행됐는지 기록해놓겠습니다.


설치

  • 다운로드 링크
    • OS에 따라 적절한 배포판 선택해서 설치
  • 설치 이후에
    • psql 이용해서 조작 가능 (CLI)
    • pgadmin4 이용해서 모니터링 및 조작 가능 (GUI)
  • DB와 유저 만들고 유저에게 권한 할당하기
create database testdb;
create user testuser with encrypted password 'testpass';
grant all privileges on database testdb to testuser;
  • account-dev.properties에 DB 정보 설정
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/testdb
spring.datasource.username=testuser
spring.datasource.password=testpass

profile 설정

기본적으로 스프링 부트에서 여러가지 앱 셋팅을 저장해놓고 쓸 수 있도록 만든 개념이다.

자세한 설명은 https://stackabuse.com/spring-boot-profiles-for-dev-and-prod-environments 여기에 있다.

스프링에서는 @Profile 이라는 애노테이션을 제공하여, 이 설정에 따라서 각각 다른 Bean을 컨테이너에 올릴 수 있다.

ConsoleMailSender 클래스 Profile 설정하기

@Profile({"local", "dev"}) // 로컬 설정일 때만 이 빈을 등록함
@Component
@Slf4j
public class ConsoleMailSender implements JavaMailSender {

위와 같이 애노테이션을 줄 수 있다.

intellij에서 dev profile로 앱 실행하기

Edit Configurations...에 들어가서

아래쪽 Active profilesdev를 입력하고 적용하면 된다.

application-dev.properties 생성하기

spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/testdb
spring.datasource.username=testuser
spring.datasource.password=testpass

위의 내용을 넣어주어, dev 환경에서는 postgresql DB를 사용하도록 한다.

application-<profile-name>.properties와 같은 형식의 properties 파일을 만들어주면, 프로필을 바꿈으로써, 내가 쓸 properties 파일도 변경할 수 있다.

기본적으로 스프링 부트는 application.properties를 사용하고, 개발 환경을 위한 application-dev.properties와 배포 환경을 위한 application-prod.properties를 사용하는 게 일반적이다.

profile
풀스택 웹개발자로 일하고 있는 Jake Seo입니다. 주로 Jake Seo라는 닉네임을 많이 씁니다. 프론트엔드: Javascript, React 백엔드: Spring Framework에 관심이 있습니다.

0개의 댓글