본문 바로가기

백엔드52

TIL : Bean 컨테이너와 ComponentScan (22) 🎛️ ApplicationContext 스프링에서 핵심인 ApplicationContext는 Bean을 관리해준다. 싱글톤 레파지토리로도 불리는데 Bean을 싱글톤으로 관리해주기 때문이다. 우리가 작성한 설정 정보를 적용시키려면 @Configuration을 붙여준다. 여기에 싱글톤의 비밀이 들어있다. 설정 정보는 우리가 작성한 순수 자바 클래스가 빈으로 등록되는 것이 아니다. 작성한 자바 클래스를 상속받는 임의의 다른 클래스를 만들고 빈으로 등록한다. 여기서는 CGLIB라는 바이트코드 조작 라이브러리를 사용한다. CGLIB 라이브러리가 내부적으로 어떻게 구현되었는지는 모르겠지만, 빈이 존재하면 기존 인스턴스를 반환하고 아니라면 생성할 수 있도록하는 클래스로 변환될 것이다. 따라서 @Configuratio.. 2023. 5. 17.
[BackEnd] MapStruct 사용기 😋 MapStruct 사용기 객체 간의 간단한 매핑을 위해서 MapStruct를 도입한 이야기를 해보려고 합니다. 어떻게 사용하는지와 사용하고 어땠는지 적어보겠습니다. 🪄 MapStruct란? Java 기반의 객체 매핑 라이브러리입니다. 다음과 같은 특징을 가지고 있습니다. 컴파일 시점에 매핑 코드를 작성한다. 그래서 런타임 시 오버헤드가 없고 안전하다. 다른 매핑 라이브러리보다 빠르다. 어노테이션을 통해서 매핑을 개발자가 쉽게 제어할 수 있다. Lombok에 대한 의존성이 꼭 필요하다. 💡 MapStruct 사용법 예시에 사용될 DTO와 Entity는 다음과 같습니다. // DTO 1번 public class RequestDto { private String title; private String co.. 2023. 5. 13.
[BackEnd] Enum 유효성 검사 구현기 🤔 들어가기 앞서 사실 enum에 대한 유효성 검사를 위해서 Custom Annotation을 구현할 필요는 없을 수 있다. 하지만 나는 DTO에서 enum 타입 자체를 가지고 있고, 구현한 enum 타입이 많아서 만들었다. 이를 통해서, Parse 오류도 잡고 클라이언트에서 어떤 값을 잘못 보냈는지 확인할 수 있게 되었다! 😋😋 Custom Annotation을 구현하는 방법은 이전에 작성한 글을 참고하기 바란다! 🪄 Enum용 CustomAnnotation 만들기 작성한 코드는 우선 다음과 같다. 핵심으로 표시한 부분은 다음에 설명하겠다. @Target({ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) @Constraint(validatedBy = .. 2023. 4. 25.
[Spring] @ModelAttribute 🌞 들어가기 앞서 스프링에서 요청한 파라미터를 바인딩하는 방법은 여러 가지 있다. 오늘은 그중에서 @ModelAttribute에 대해서 이야기해 볼 생각이다. 사용은 쉽지만 주의할 점이 있기 때문에 어떻게 동작하는지와 같이 주의점도 정리해 보겠다. 😋😋 🪄 @ModelAttribute란? 파라미터를 바인딩하는 여러 어노테이션 중에 모델 객체를 바인딩하는 어노테이션이다. 다음과 같은 모델 객체(혹은 DTO)가 존재할 때 정보를 받아오는 방법은 여러 가지가 있겠지만 이 글에서는 @RequestParam과 @ModelAttribute를 비교해서 사용법을 알아보겠다! 가볍게 참고만 하자 ㅎㅎ.. // 모델 객체 public class User { private String name; private int age.. 2023. 4. 19.
[AWS] AWS 인프라 구축하기 - CodeDeploy (5) 🤗 AWS 구축하기 5 사실 이 시리즈의 메인 파트이다. 이번 프로젝트에서는 Github Action과 CodeDeploy로 CI/CD를 구축했다. 도커는 다음에.. 실행 과정은 다음과 같다. task 1 : Github Action에서 작업들을 마치고 코드를 빌드한다. task 2 : Github Action이 CodeDeploy를 동작시키고, S3에 빌드 결과물을 저장한다. task 3 : CodeDeploy가 EC2에 S3에 저장된 결과물을 가져와 배포한다. 설정하는 데 있어서 중요한 것은 IAM 권한 설정하는 것이다! 차근차근 기록해 보자. 🏭 CodeDeploy 🖥️ EC2 설정 추가하기 EC2에서 배포를 진행하려면 다음과 같은 추가적인 설정이 필요하다! Tag 추가하기 IAM 추가하기 인스턴스.. 2023. 4. 5.
[AWS] AWS 인프라 구축하기 - SES (4) 🤗 AWS 구축하기 4 일반적으로 회원 정보를 자체적으로 관리하는 서비스는 많지 않다. 왜냐하면 OAuth2를 사용하면 직접 유저 정보를 관리할 필요가 없어지기 때문이다. 하지만 이 프로젝트에서는 특정 집단만 사용할 수 있게 제한했기 때문에 우리가 로그인을 구현해야 했고, 인증을 위해서 Email 서비스를 사용하기로 했다! AWS의 SES 서비스를 사용할 예정이다. ✉️ SES SES(Simple Email Service)를 사용하기 위해서는 크게 어려운 점은 없다. 특별히 설정할 건 없지만 꼭 해줘야 하는 설정이 다음 2가지 존재한다. 샌드박스 벗어나기 도메인 or 이메일 설정하기 1️⃣ 샌드박스 벗어나기 SES가 샌드박스에 묶여있다면 인증된 사용자한테만 메일을 보낼 수 있다. 즉, 인증되지 않은 사람.. 2023. 4. 5.