본문 바로가기

전체 글119

파사드 패턴 적용기 파사드 패턴이란? **파사드 패턴(Facade Pattern)**은 객체 지향 디자인 패턴 중 하나로, 서브시스템(여러 개의 클래스로 구성된 복잡한 시스템)을 단순화하고 클라이언트에게 편리한 인터페이스를 제공하기 위해 사용되는 패턴이다. 이 패턴은 복잡한 시스템을 감싸고, 클라이언트가 시스템 내부 구조를 알 필요 없이 간단하게 상호작용할 수 있도록 한다. 즉, 파사드는 중재자 역할을 하며, 클라이언트와 서브시스템 간의 인터페이스 역할을 수행한다. 파사드 패턴은 의존성을 낮춰 결합도를 높이고 코드 유지 보수를 개선하는 데 도움을 준다. 이게 뭘까 어떻게 코드에 적용해서 퀄리티를 높일 수 있을까? 궁금했는데 프로젝트 진행 중에 강사님께 파사드 패턴을 적용해보라는 조언을 받았다! 나의 상황 메인페이지에 카테고.. 2023. 12. 6.
스프링부트로 s3에 이미지 업로드 하기 ++열심히 삽질하고 영상도 찾아보고 구글도 찾아보다가 415에러의 늪에 빠져 허우적 거리다 찾은 쏫아날 구멍입니다! 저는 스프링 부트3에서 작업했습니다. 저의 상황부터 말씀드리자면, 유저가 게시글을 등록하려고 하면 text부분은 reqeustDto로 post service에서 save 되고, 이미지 파일은 MultiPartFile로 s3에 저장합니다. s3에서 저장하면 이미지에 접근할 수 있는 고유 url을 주는데 그것을 postId와 함께 이미지 entity에 저장합니다. 저는 모놀리식이 아닌 msa로 진행해서 이미지 entity에 저장할 때, 게시물에 접근하면 해당 이미지를 postId로 조회하기 때문에 postId와 이미지 url을 함께 저장하는 것입니다! 그리고 저는 백엔드를 맡았기 때문에 프론트.. 2023. 11. 29.
[queryDSL] 스프링 부트 3에 쿼리 dsl 설정하기 build.gradle에 의존성 추가 implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor 'com.querydsl:querydsl-apt:5.0.0:jakarta' annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api" 그 아래에 경로 설정 tasks.named('test') { useJUnitPlatform() } // Querydsl 설정부 def generated = 'src/main/generated' // querydsl QClass 파.. 2023. 11. 28.
s3 랑 스프링부트랑 연동하기 aws들어가면 s3를 누르고 새 버킷 만들기를 누른다. 아래의 일반 구성에 버킷이름과 aws리전만 설정하고 나머지는 건들지 않는다! 이미 비공개로 안전하게 설정되어있으므로 ㅎㅎ 그리고 아래의 버킷만들기라는 주황색 버튼을 클릭하면 이미지를 담을 수 있는 버킷 생성! S3에 접근하기 위해 IAM 사용자에게 S3 접근 권한을 주고, 엑세스 키를 만들어 액세스 키, 비밀 엑세스 키를 설정하기 위해 IAM 항목에 들어간다. 아래와 같이 검색해서 들어가기 가능! IAM들어와서 정책 카테고리 들어간 후 정책생성이라는 주황색 버튼 클릭 내가만든 정책은 아래와 같다. 여기서 리소스를 눌러 arn을 추가한다! 해당 버킷에 대해서만 이 정책이 적용되어야 하므로 적용하고 싶은 버킷이름을 설정해주는 작업이다. 추가된 것을 확인.. 2023. 11. 21.
Enum에 내가 설정한 문자열 값으로 출력하기 보통 어떤 상태값을 enum으로 많이 사용합니다! 저도 판매 글을 올릴때 상태값을 아래와 같이 기본 설정을 in_progress로 두었습니다. 그리고 postman으로 요청한 후 db를 확인해 보면 status 값에 "0"이 뜨는 것을 확인할 수 있는데요! 이건 enum class에 제가 설정한 값의 인덱스 값이 들어간 것입니다, 아래가 제가 설정한 enum SaleStatus인데요. IN_PROGRESS가 인덱스 0, COMPLETED가 인덱스 1로 DB에는 표현 됩니다! 따라서 저는 잘 입력된 것임을 확인할 수 있죠. 만약에 인덱스값 말고 제가 설정한 스트링 값으로 DB에도 저장하고 싶다면 에너테이션 하나를 필드값에 붙여주면 됩니다. 게시글의 satus 필드값 위에 @enumerated를 이넘타입은 .. 2023. 11. 14.
객체 지향적으로 개발해야 하는 이유 자바의 빼놓을 수 없는 특징은 '객체 지향적인 언어'라는 점이다. 객체 지향이 왜 장점이고, 우리는 왜 객체 지향적으로 개발을 해야 할까? 왜 절차 지향 프로그래밍에서 객체 지향 프로그래밍으로 넘어오게 된 것일까? 먼저 객체 지향 프로그래밍(OOP)은 소프트 웨어 개발 패러다임 중 하나의 방법으로, 모델링을 사용하여 코드를 구조화하는 방법이다. 객체 지향 프로그래밍에서 사용하는 개념 5가지를 생각하면 이해하기 쉽다. 1. 클래스 클래스는 객체의 설계도다. 클래스는 객체를 생성하기 위한 필드(속성), 메소드(동작)를 정의한다. 변수와 함수를 밀접하게 하나의 클래스 소속으로 만들면 관리하기가 쉽다. 2. 객체 객체는 클래스를 기반으로 만들어진 실체이다. 객체의 설계도를 바탕으로 실제 데이터를 포함하고 특정 .. 2023. 11. 2.