[SpringBatch] 스프링 배치란?
·
Framework/SpringBoot
스프링 배치와 배치 프로그램에 대한 개념 위주로 서술한 글입니다. 🪄 이런 분들이 읽으면 좋아요!배치 프로그램이 뭔지 몰라요스프링 배치를 처음 들어봤어요Batch배치 프로그램이란?배치 프로그램은 대량의 데이터를 정해진 주기나 조건에 따라 자동으로 처리하는 프로그램입니다. 웹 애플리케이션처럼 사용자가 요청을 보냈을 때 바로 요청을 처리하는 것이 아니라, 요청을 일괄적으로 묶어서 한 번에 처리(batch)합니다. 배치 프로그램은 반복적인 작업 처리를 해야 할 때 쓰입니다. 예를 들어 매일 새벽마다 데이터를 백업하거나, 매주 특정 시간에 보고서를 생성하는 등의 작업을 배치 프로그램을 통해 처리합니다. 또한 배치 프로그램은 백그라운드에서 실행되기 때문에 사용자가 실시간으로 신경쓰고 있지 않아도 시스템이 뒤에서..
[Express] Aws s3 버킷을 이용하여 파일 업로드 구현하기
·
Framework/Node.js
AWS S3 버킷을 이용하여 파일 업로드 로직을 구현하는 방법에 대해 설명한 글입니다. 📍 참고사항1. 해당 글에서는 S3 버킷을 만들고 액세스 키를 발급받는 방법이 생략되어 있습니다.2. 해당 글에서는 Express 프로젝트를 생성하고, DB를 연결하는 등의 방법이 생략되어 있습니다.3. 개발 언어로는 JS를 사용하며, ORM 라이브러리는 typeorm을 사용한 프로젝트입니다. (ORM 라이브러리는 상관 X) 버킷이 아직 없다면 아래 글을 참고해 주세요!https://hulrud.tistory.com/105 [AWS] AWS S3를 알아보고 버킷 만들어보기S3를 알아보고, 실제 S3 서비스를 이용하는 방법을 작성한 글입니다 🔔 사전 준비1. AWS 회원가입2. SpringBoot 3.2.3 버전 프..
[Spring] 내가 생각하는 Spring을 하면서 꼭 알아야 하는 개념들
·
Framework/SpringBoot
Spring을 하면서 꼭 알아야 한다고 생각하는 개념들에 대해 작성한 글입니다. 어떤 개념을 다루는지는 목차를 참고해 주세요! (2024.05.15 업데이트)  최근 스프링 프로젝트를 하면서 다시 개념에 대한 공부를 할 타이밍이란 것을 느끼게 되었습니다. 이유는 이론 공부한 지 너무 오래되어 개념들이 머리 속에서 정리가 안 된 기분이 들어서... 그래서! 이 글에서는 제가 작년부터 스프링을 공부하면서 정리한 개념들을 쭉 나열했습니다.한 개념을 자세하게 설명하지 않았습니다.!만약 어떤 개념을 자세하게 알고 싶어서 이 글을 클릭하셨다면 뒤로 가기를 추천드립니다. 여러 개념을 쓱~ 보고 싶으시다면 이 글이 도움이 될지도 모르겠습니다... ㅎ 1. 계층스프링 부트에는 프로젠테이션, 비즈니스, 퍼시스턴스 계층이 ..
[SpringBoot] Github Action을 이용한 CI/CD (ElasticBeanstalk)
·
Framework/SpringBoot
CI/CD란 무엇인지, SpringBoot 프로젝트를 Github Action을 이용하여 CI/CD를 하는 방법에 대해 작성한 글입니다. 🔔 준비 사항1. 배포할 SpringBoot 프로젝트2. (1) 프로젝트와 연동되어있는 Github Repository3. SpringBoot 프로젝트가 배포되어 있는 우분투 서버 ⚡️ 참고1. 스프링 버전 3.2.3을 사용하고 있습니다.2. Elastic Beanstalk 서버를 배포중입니다. CI/CD란? CI/CD는 지속적 통합(Continuous Integration) 및 지속적 제공/배포(Continuous Delivery/Deployment)를 의미하며, 소프트웨어 개발 라이프사이클을 간소화하고 가속화하는 것을 목표로 하는 방법론 입니다. (도구를 의미하는..
[React] 로그인 후 유저 정보를 Redux에 저장하기 (TypeScript)
·
Framework/React
유저가 로그인 후 유저의 정보를 리덕스에 저장하는 예제를 설명하는 글입니다. 이 글을 보기 전 읽으면 좋은 글 https://hulrud.tistory.com/101 [React] 리덕스 알아보기 리덕스가 무엇인지 알아보는 글입니다! 사용 방법은 언급되지 않습니다. 리덕스 리덕스는 리액트 앱의 상태를 관리하는 패키지입니다. 여기서 앱의 상태는 즉 데이터를 말합니다. 다시말해 하 hulrud.tistory.com 리덕스 패키지 설치하기 먼저 리덕스 패키지를 설치합니다. npm i redux @reduxjs/toolkit react-redux 유저 타입 정의하기 src에 types 디렉토리를 만들고 저장할 유저의 타입을 정의합니다. export const LOGIN_SUCCESS = 'LOGIN_SUCCES..
[React] 리덕스 알아보기
·
Framework/React
리덕스가 무엇인지 알아보는 글입니다! 사용 방법은 언급되지 않습니다. 리덕스 리덕스는 리액트 앱의 상태를 관리하는 패키지입니다. 여기서 앱의 상태는 즉 데이터를 말합니다. 다시말해 하나의 애플리케이션에서 다루는 데이터를 관리하는 패키지입니다. 리덕스의 세 가지 원칙 리덕스에는 아래와 같은 세 가지의 원칙이 있습니다. 단일 소스 진실 (Single Source of Truth): 리덕스는 애플리케이션의 상태를 단일 객체로 관리합니다. 이 객체는 애플리케이션의 모든 상태를 포함하며, 이를 스토어(Store)라고 합니다. 모든 컴포넌트에서 이 상태에 접근할 수 있습니다. 상태는 읽기 전용 (State is Read-Only): 리덕스의 상태는 읽기 전용입니다. 이는 상태를 직접 변경할 수 없으며, 대신 상태를..
[Spring] VO와 BO, DAO, DTO란 무엇인가
·
Framework/SpringBoot
VO, BO, DAO, DTO는 소프트웨어 개발에서 주로 사용되는 용어들입니다. 각각의 용어는 소프트웨어의 다른 층에서 사용되는 객체들을 나타냅니다. 각각의 역할과 특징에 대해 간단히 설명해보겠습니다.요약VO (Value Object):VO는 값을 담는 객체를 나타냅니다. 주로 데이터베이스의 테이블에 대응되는 엔티티의 상태를 나타냅니다.VO는 주로 불변(Immutable)하고, equals() 및 hashCode()와 같은 메서드를 오버라이드하여 객체의 동등성을 비교하는 데 사용됩니다.BO (Business Object):BO는 비즈니스 로직을 처리하는 객체를 나타냅니다. 주로 비즈니스 규칙을 구현하고, 데이터를 처리하며, 다양한 계산을 수행하는 데 사용됩니다.BO는 비즈니스 도메인에서의 객체를 나타내며..
[SpringBoot3] 스프링부트와 Swagger 연결방법
·
Framework/SpringBoot
Swagger가 무엇인지, 스프링부트 애플리케이션과 Swagger의 연결 방법에 대해 작성한 글입니다. Swagger란? Swagger는 API 개발 및 문서화를 위한 도구입니다. Swagger를 사용하면 자동으로 API를 문서화할 수 있습니다. 다음 기능들을 통해서 API를 문서화하고 관리할 수 있습니다. API 문서 자동 생성: Swagger를 사용하면 개발자가 작성한 API 코드를 기반으로 자동으로 API 문서를 생성할 수 있습니다. 이를 통해 API의 엔드포인트, 매개변수, 응답 형식 등에 대한 세부 정보를 쉽게 확인할 수 있습니다. API 스펙 정의: Swagger는 OpenAPI Specification(OAS)을 사용하여 API 스펙을 정의합니다. 이를 통해 API의 구조와 동작 방식에 대한..
[SpringBoot3] 엔티티 상속관계에서 @Builder 적용
·
Framework/SpringBoot
상속관계에서 Builder를 적용했을 때 발생한 이슈에 대해 작성한 글입니다. 발생 배경 엔티티에 @Builder 어노테이션을 사용하였습니다. @Entity @DiscriminatorValue("PRODUCT") @Getter @Builder @AllArgsConstructor @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Product extends Item { @Enumerated(EnumType.STRING) @Column(nullable = false) private ProductStatus status; // ... } 다만 Product의 부모 엔티티인 Item에도 @Builder 어노테이션이 있는데요 @Entity @Inhe..
[SpringBoot] application.properties에서 DB 정보 등 민감한 내용 분리하기
·
Framework/SpringBoot
application.properties의 정보들을 분리하여 관리하는 방법에 대해 설명한 글입니다. application.properties란 spring.jpa.defer-datasource-initialization=true spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=root spring.datasource.password=1234 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.jpa.hibernate.ddl-auto=create application.properties는 자바 기반의 애플리케이션에서 주로 사용되는 설정 파일..
[Spring] MappedSuperclass 사용하기
·
Framework/SpringBoot
MappedSuperclass에 대해 정리한 글입니다. @MappedSuperclass란 @MappedSuperclass는 JPA에서 엔티티 클래스들 간에 공통된 매핑 정보를 재사용하기 위한 어노테이션입니다. 이 어노테이션을 사용하면 여러 엔티티 클래스에서 동일한 매핑 정보를 공유하여 코드의 중복을 줄여줍니다. 가령 createdAt, updatedAt 등 모든 엔티티에 공통적으로 포함되는 필드가 있다면 @MappedSuperclass를 이용하여 공통된 필드를 포함하는 클래스를 다른 엔티티들이 상속받도록 하면 됩니다. @MappedSuperclass 사용 아래 BaseEntity가 @MappedSuperclass로 지정되어있습니다. import lombok.AccessLevel; import lombok..
[Node.js] dotenv로 환경변수 관리하기
·
Framework/Node.js
.env 파일로 환경변수를 관리하는 방법에 대해 소개하는 글입니다. 패키지 설치 아래 명령을 실행하여 dotenv 패키지를 설치합니다. npm install dotenv .env 파일 만들기 .env 파일에서 환경 변수를 초기화 하겠습니다. 확장자 없이 .env라는 파일을 만들어주세요. 그리고 변수로 지정할 값을 아래처럼 작성합니다. key=value 형태로 작성하며 문장 끝에 세미콜론을 작성하지 않습니다. DB_HOST=localhost DB_USER=root DB_PASSWORD=1234 DB_DATABASE=mydatabase 변수 불러오기 require('dotenv').config(); 불러 올 파일에 위 코드를 작성하면 됩니다. 그리고 변수를 사용할 땐 아래처럼 사용합니다. 이 때 위 코드가 ..