전체 글 23

스프링 + JWT 비밀번호 변경 기능 구현

기존 비밀번호와 신규 비밀번호를 입력받아 DB의 비밀번호를 수정하는 기능을 구현했다. UserAccountController.java @PatchMapping("/api/user/password") public ApiResponse modifyUserPassword(@RequestHeader("Authorization") String accessToken, @RequestBody ModifyUserPasswordRequest modifyUserPasswordRequest) { userAccountService.modifyUserPassword(accessToken, modifyUserPasswordRequest); return ApiResponse.createSuccessWithNoContent(Resp..

Spring 2023.05.19

IntelliJ에서 정적 import 하는 방법

assert 관련 코드를 작성할 때마다 자동 완성이 되지 않아 직접 import 해줘야 하는게 불편해서 방법을 찾아보았다. 나는 링크에 있는 방법 중 3번째를 사용 중이다. https://www.raegon.com/intellij-test-static-import#%EB%9D%BC%EC%9D%B4%EB%B8%8C-%ED%85%9C%ED%94%8C%EB%A6%BF-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0 IntelliJ에서 정적 임포트를 하는 방법 - raegon JUnit 테스트를 작성할 때 단언문을 자주 사용하게 됩니다. 하지만 Assertions 클래스에 속한 정적 메소드를 사용하기 위해 assertThat을 입력할 경우 자동완성 팝업이 표시되지 않아서 불편합니다. Ctrl ..

DevOps 2023.03.26

Github Actions 데이터베이스 연동 및 설정 파일 자동 배포

서론 지난번에 Github Actions을 사용하여 로컬에서 master 브랜치에 푸시를 하면 aws 서버에 배포까지 되도록 해보았다. 그 때 사용했던 프로젝트는 start.spring.io에서 받은 파일을 거의 그대로 사용했었다 (DB 관련 dependency가 포함되지 않은 상태였음). 그런 프로젝트를 기반으로 기능들을 조금씩 추가해가며 스프링에 익숙해지려고 하는데, DB 정보를 추가한 이후에 발생한 에러 때문에 3일 동안 시행착오를 많이 겪었다. 익숙하지 않은 툴과 프레임워크 투성이에, 예제도 잘 되있는게 거의 없어서 많이 헤맸다. 그래서 데이터베이스 연동을 포함한 프로젝트를 배포하기 위해서 어떤 작업을 해야하는지 설명하고, 그 뒤에 내가 봤던 문제들에 대해 적어보려고 한다. 처음에 내가 헷갈렸던게..

DevOps/Github 2022.11.04

Github Actions 'use'을 통해 기존 action 사용하기

Github Actions는 일반적으로 Ci/CD의 자동화를 위해서 사용된다. 그리고 이를 위한 워크플로우(workflow)을 구성할 때 반복적으로 처리되는 작업들을 재사용이 용이하도록 제공되는 Action이라는 메커니즘이 있다. 헤더파일 같은 느낌이라고 보면 될 것 같다. github 측에서 공식 계정인 'actions'가 만든 action들이 기본적으로 추천되고, Github Marketplace를 통해 공개해둔 액션을 쉽게 검색해서 사용해볼 수 있다. 이러한 action들은 YAML 파일에서 use 라는 키워드를 통해 프로젝트에 적용할 수 있다. use 키에 사용하고자 하는 action의 정보를 작성하여 불러온다. {소유자}/{저장소명}@{참조자} 와 같은 형식이다. 여기서 참조자는 커밋 해쉬값도 ..

DevOps/Github 2022.11.03

[AWS] Github Actions 사용하여 EC2에 Spring Boot 배포 자동화하기

지난 글에 작성했던 것처럼 코드를 작성하여 master 브랜치에 push 하면 EC2 인스턴스에서 동작하고 있는 스프링 어플리케이션에 반영되도록 만드려고 한다. 자세한 내용들은 아래 블로그에서 친절하게 설명해주고 있어서 여기서는 따라하면서 내가 헷갈렸던 부분을 위주로 언급한다. https://bcp0109.tistory.com/363 Github Actions CD: AWS EC2 에 Spring Boot 배포하기 Overview 애플리케이션을 개발하면 외부에서도 접근 가능하도록 클라우드 환경에 배포합니다. 이전에 포스팅 했던 AWS 1편에서는 마지막에 scp 명령어로 로컬에 존재하는 빌드 파일을 EC2 인스턴스 bcp0109.tistory.com 작업 순서 먼저 해야할 작업들은 아래와 같은데, Gith..

AWS 2022.11.02

[AWS] EC2에서 스프링 프로젝트 배포

로컬에서 구현하고 테스트해본 프로젝트를 AWS의 EC2에서 배포해보자. 먼저 가상 컴퓨터에서 git과 java를 설치해준다. 자바를 설치할 때 중간에 설치를 진행할건지 물어보는데 이 때 y를 입력해주면 된다. 아니면 설치 명령어 뒤에 -y 옵션을 붙여줘도 된다. sudo yum install -y git sudo amazon-linux-extras install java-openjdk11 이제 프로젝트를 홈 디렉터리에 만들어줄거다. 나는 apps라는 디렉터리를 생성하고 거기에 프로젝트를 clone을 했다. mkdir apps cd apps git clone [git remote 링크] 프로젝트 빌드를 하기 위해서 해당 디렉터리에 존재하는 gradlew의 실행권한을 변경해준다. 그리고 빌드를 해보자. su..

AWS 2022.10.31

[AWS] EC2 & RDS 생성 및 연동

기존에 있던 글들과는 달리 최근 AWS 콘솔 UI가 업데이트된건지 RDS를 생성하면서 바로 EC2와 연동할 수 있었다. 이를 제외하면 크게 달라진 점은 없는 것 같다. https://victorydntmd.tistory.com/337 [AWS] RDS 인스턴스 생성 및 EC2에서 접근하기 ( MySQL, 프리티어 ) 1. 서비스 소개 AWS RDS(Relational Database Service)는 클라우드에서 관계형 데이터베이스를 쉽게 설치, 운영 및 확장할 수 있는 관리형 서비스이며, 주요 특징은 다음과 같습니다. Amazon Aurora, MySQL, Mari.. victorydntmd.tistory.com https://sasca37.tistory.com/85?category=1230938 [A..

AWS 2022.10.31

[AWS] AWS 관리자 및 개발자용 IAM 계정 생성

먼저 IAM 계정에서도 결제 정보에 엑세스 할 수 있게 설정해준다. 우측 상단의 [아이디] - [계정] 탭에서 아래 부분을 찾아 편집을 선택하고 [IAM 엑세스 활성화]로 업데이트 서비스 검색에서 [IAM] 입력 및 선택 루트 계정으로도 모든 서비스를 사용할 수 있겠지만, AWS에서는 IAM 사용자를 별도로 만들기를 "강력하게" 권하고 있다. 만약 해킹당했을 경우 피해가 커질 수 있기 때문이다. 이제 IAM 관리자 계정을 만들어보자. 사용자 그룹에서는 그룹 이름과 권한을 설정하고, 그 안에 속하는 사용자는 사용자 이름과 액세스 방식, 비밀번호, 태그 등을 설정할 수 있다. [사용자 그룹] - [그룹 생성] [사용자] - [사용자 추가] IAM 계정 생성 완료 창에서 로그인 링크를 클릭하거나 IAM 사용자..

AWS 2022.10.29

[Spring JPA] JPQL like 사용법

1. 개요 JPA는 Java Persistence API의 약자로, 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스이다. 이를 구현해둔 것이 Hibernate이고, 이걸 스프링에서 편하게 쓸 수 있도록 한게 Spring Data JPA이다. 스프링에 대한 감을 잡기 위해서 스프링 MVC 하루만에 배우기을 보면서 코드를 따라서 쳐보았다. 이 프로젝트에서는 maven과 jdbc를 사용했는데 나는 gradle과 JPA를 사용하고 싶어 상황에 맞게 변환하였다. 그 중 keyword에 해당하는 데이터를 검색하는 기능이 있었는데, Spring data JPA는 많았어도, RAW JPA 자료는 거의 없어서 애를 먹었었다. 2. TypedQuery EntityManager 자체적으로는 ke..

Spring 2022.10.18