전체 글
-
스웨거(OpenAPI) 로 API 명세서 자동화 하기SpringBoot 2023. 11. 30. 18:58
프론트 개발자, 기획자 등과 커뮤니케이션 할 때, 기능을 추상화 하여 커뮤니케이션 할 수도 있지만, request 와 response 를 통해 커뮤니케이션 하는 것이 혼선을 줄일 수 있는 좋은 방법이라고 생각한다. Swagger (OpenAPI 와 통합) 를 통해 프론트엔드 연동, QA 등에서 정상동작 여부 및 오류 확인 등의 기준이 되는 API 를 확인해보자. 스웨거를 적용한 환경은 Springboot 2.7.15 버전이다. 1. build.gradle 내 Dependency 추가하기 implementation "io.springfox:springfox-boot-starter:3.0.0" implementation "io.springfox:springfox-swagger-ui:3.0.0" 'spring..
-
GitHub Actions 로 Docker 빌드 및 자동 배포하기CI CD 2023. 11. 20. 23:36
깃허브 액션을 사용하면 소스코드의 변경 후 git push 시, 자동으로 어플리케이션 빌드, 도커 이미지 생성 및 배포를 할 수 있다. 이 게시글은 전체적인 틀에 대한 제시이며, 각 프로젝트의 환경에 따라 프로세스를 가감 하여 사용할 수 있다. * 도커 적용과 도커파일 관련 내용은 아래 게시글에서 확인할 수 있다. Docker 로 SpringBoot 프로젝트 배포하기 - 이미지 빌드 해서 Docker Hub에 푸시 기존 내 프로젝트는 war 파일을 톰캣 매니저 페이지를 통해 배포하는 방법을 채택했었다. 다만 프로젝트를 변경해 나가는 과정에서, ec2 인스턴스를 새로 설정하게 되는 경우가 발생하는데, 이때 joelinseoul.tistory.com 예시로 활용된 프로젝트의 환경은 아래와 같다. 프로젝트 환..
-
디자인패턴 - 팩토리 패턴CS Study 2023. 11. 8. 01:02
팩토리 패턴의 개념 팩토리 패턴 (Factory Pattern)은 객체를 사용하는 코드에서, 객체 생성 부분을 떼어내 추상화 한 패턴. 상속 관계에 있는 두 클래스에서 상위클래스는 중요 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴. 팩토리 패턴의 특징 상위 클래스와 하위클래스가 분리되기 때문에, 느슨한 결합을 가짐. 상위클래스에서는 인스턴스의 생성 방식에 대해서 알 필요가 없기 때문에 유연성을 가짐. 유지보수성의 증가 : 객체 생성 로직이 따로 떼어져 있기 때문에, 코드를 리팩토링하더라도 한 곳만 고칠 수 있게 됨. Java 에서의 팩토리 패턴 적용 예시 package csstudy.tistory; public class FactoryPatternExample { /..
-
디자인패턴 - 싱글톤 패턴CS Study 2023. 11. 8. 00:40
싱글톤 (Singleton) 패턴 핵심 하나의 클래스에 오직 하나의 인스턴스만 가지는 디자인 패턴. 클래스를 기반으로 단 하나의 인스턴스를 만들어, 이를 기반으로 로직을 만듦. 보통 데이터베이스 연결 모듈에서 주로 사용. 장점 : 하나의 인스턴스를 만들어 놓고, 해당 인스턴스를 다른 모듈들이 공유하여 사용하므로, 인스턴스를 생성할 때 드는 비용이 줄어듬. 단점 : 의존성이 높아짐 -> 각 테스트 마다 독립적인 인스턴스를 생성해야 하는 TTD(Test Driven Development) 적용이 어려움. 싱글톤 패턴의 의존성 주입 의존성 주입 개념 : 싱글톤 패턴은 모듈 간의 결합을 강하게 만들 수 있는 단점이 있음. → 이 때 의존성 주입을 통해 해결 가능. 중간에 의존성 주입자(depenency inje..
-
ThymeLeaf 템플릿으로 JavaMailSender 활용, 자바 메일보내기SpringBoot 2023. 11. 1. 22:18
Spring 의 JavaMailSender 와 Thymeleaf의 템플릿 엔진을 사용하여 이메일을 생성하고 발송하는 기능을 구현해 본다. 흐름은 아래와 같다. 간단한 인증번호 전송 등의 기본 메일이라면, 아래의 모듈화 정도가 적당할 것 같다. build.gradle 의존성 추가 JavaMailSender를 사용하기 위해 spring-boot-starter-mail 을 의존성 추가하고, 템플릿엔진을 사용하기 위해 spring-boot-starter-thymeleaf 를 의존성 추가한다. //메일발송 implementation 'org.springframework.boot:spring-boot-starter-mail' //thymemeleaf implementation 'org.springframework...
-
AWS RDS 환경설정 하기AWS/RDS 2023. 11. 1. 16:45
기존에는 EC2 인스턴스에 MySQL을 함께 올려 사용했었다. 다만 서비스를 운영하다 보니, 성능저하가 빈번하게 발생했고, 자바 애플리케이션과 mysql 중 어느 부분이 성능저하를 만들어 내고 있는가 에 대한 직관적인 확인이 어려웠다. 따라서, EC2 와 RDS 를 분리하여 각각 인스턴스에 대한 관리를 용이하게 하고 싶었고, RDS를 추가하게 되었다. RDS 생성 및 EC2 연결 방법은 아래와 같다. RDS 인스턴스 생성하기 AWS RDS 에서 "데이터베이스 생성" 을 클릭, 아래의 화면으로 들어가며 시작된다. 데이터베이스 생성 방식 선택 은 표준 생성으로 둔다. 엔진 유형과 엔진 버전은 프로젝트에 적용되어 있는 DB를 선택하면 된다. 나의 경우, MySQL 8.0이 적용되어 있다. 템플릿은 필요에 따라..
-
EC2 (Amazon Linux 2023) 에 mysql 클라이언트 설치하기AWS/EC2 2023. 11. 1. 16:36
RDS 의 데이터베이스 에 퀴리 실행, 테이블 확인 등을 하기 위해 EC2 에 mysql 을 설치해 볼 것이다. 1. MySQL 8.0 설치 패키지를 내려받는다. (rpm) sudo dnf install https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm GPG key 등록하기 sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023 MySQL 클라이언트 설치 sudo dnf install mysql DB 접속해보기 mysql -u -p -h
-
SpringBoot 에서 JPA 사용하기 - 활용 하기SpringBoot/JPA 2023. 10. 31. 23:50
이전 글: JPA 환경설정 하기 SpringBoot 에서 JPA 사용하기 - 환경설정 하기 Lombok 설치하기 Lombok을 설치하면 별도의 getter/setter 을 만들지 않아도, 어노테이션으로 간단히 객체를 다룰 수 있다. JPA 는 DB 상의 데이터를 객체처럼 다룰 수 있는 핵심 장점이 있는데, Lombok은 그 joelinseoul.tistory.com 조회할 메소드를 JPQL 문법에 맞추어 메소드로 작성하면, 설정된 데이터베이스에 맞는 쿼리를 조회하여 결과를 리턴해준다. JPA 가 제공하는 메소드는 아래와 같다. 조회하기 JPA 가 제공하는 조회 메소드는 아래 표와 같다. 메소드 명 설명 리턴 예시 findAll() 모든 행 조회 List findAll(); findBy컬럼명() 컬럼값으로..