Web/Spring

    Spring MVC Request Lifecycle

    Spring MVC Request Lifecycle

    이번 글에서는 Spring MVC 라이프 사이클에 대해 이야기해보고자 합니다.라이프 사이클이 저에게는 복잡하기도 하고 이번 글도 이해하는 과정 중에 작성하는 글이므로 잘못된 부분은 일러주시면 감사하겠습니다 :^)  Spring MBC의 요청 Life Cycle에 대해 다루기 전에 Servlet과 Servlet Container에 대해 알아보겠습니다. ServletServlet이라는 기술은 웹 서버의 성능을 향상시키기 위해 사용되는 Java 클래스의 일종입니다.일반적으로 Java 기반의 웹 애플리케이션을 만들기 위해 사용되고, 웹 서버에서는 다양한 요청을 처리하기 위해서 굉장히 많은 low level 기술이 필요한데, 이때 서블릿을 이용한다고 볼 수 있습니다.그래서 좁은 의미로는 서블릿을 (자바 기반의) ..

    단위 테스트 코드 작성 (JUnit5)

    단위 테스트 코드 작성 (JUnit5)

    단위 테스트는 우리가 코드를 작성하는 방식에 이미 녹아있는 것이지 별도의 작업이 아니다. 테스트하지 않았다면 코드 작성을 완료했다고 할 수 없다. 단위 테스트는 코드가 제대로 구현되었는지 확인하는 가장 좋은 방법이다. - 도서 '소프트웨어 장인' 中 - 오늘은 필자가 현재 진행 중인 프로젝트에서 구현한 방문 가게의 리뷰글을 CRUD하는 기능에 대한 몇 가지 테스트 코드를 작성하는 겸 기록해놓기 위해 이 포스팅을 시작합니다. 테스트는 Repository, Service에 대한 단위 테스트(Unit Test)를 진행할 것이고 중점을 둔 부분은 "의존성을 최대한 줄였는가?" 입니다. Unit Test는 말그대로 단위 테스트이므로 @SpringBootTest 어노테이션을 통해 스프링을 실행시키지 않을 것이고, ..

    Spring Boot와 S3 연결하기

    Spring Boot와 S3 연결하기

    현재 개발중인 서비스에서 이미지를 업로드하는 기능을 구현하기로 했고, 업로드된 파일은 AWS의 S3 버킷에 업로드하기로 결정했다. 아래 단계로 진행한다. 1. S3의 버킷을 생성하고 정책을 설정한 후 2. S3 버킷에 접근할 수 있는 IAM 사용자를 생성하고, 3. Spring Boot에서 S3 관련 의존성과 사용자 정보(access key, secret key)를 추가한다. 4. 업로드, 수정, 삭제하는 기능을 구현한다. 이번 글에서는 3번까지 진행하는 과정을 적어보려한다. 1. s3 버킷 생성 이 단계에서 주의하여 체크할 것은 세가지이다. 1. ACL (액세스 제어 목록) 을 활성화시켜준다. 2. 퍼블릭 엑세스 차단을 해제한다. 3. 권한 > 정책 설정 버킷을 생성하고 나면, 버킷의 권한에 들어가서 ..

    ResponseEntity 사용법

    ResponseEntity 사용법

    ResponseEntity란? Spring Framework에서 제공하는 ResponseEntity는 HttpEntity를 상속(확장)하여 headers와 body를 포함하고, 추가로 HttpStatus 코드까지 함께 추가할 수 있는 클래스로, REST 컨트롤러 혹은 일반 컨트롤러에서 응답하는 객체로서 사용된다. HttpEntity는 header와 body로 구성되어 Http 요청 혹은 응답 Entity로서 사용되는 클래스이다. (참고문서) 결론은! Http 요청에 응답 Entity로 사용될 수 있는 클래스이다. 문서의 생성자 설명 부분을 보면 Body, Headers, Status를 지정할 수 있다. (참고 문서) 예시 Controller에서 응답 객체를 생성하는 역할을 하는 클래스로 ResponseJ..

    JAP Query로 특정 칼럼의 count 쿼리문 실행하기

    JAP Query로 특정 칼럼의 count 쿼리문 실행하기

    상황 JAP Query문으로 특정 칼럼의 count를 조회해야하는 상황 해결 여러 글을 구글링해보고 다음과 같이 작성하였다. stackoverflow의 글을 첨부한다. 보통 조건값으로 조회, 합계된 값 조회 등을 쿼리하는 것과 같이 복잡한 쿼리문을 수행하고자 할 때 이 방식을 사용하는 것 같다. 이외에도 2가지 정도의 방법이 더 있었다. (참고1, 참고2) 위 글 뿐만 아니라 많은 곳에서 List 로 값을 받도록 작성되어 있다. (여기서 꽤 애를 먹었다..) 내가 받는 결과값은 2차원이므로 List, List와 같이 해주어야 한다. (본인은 전자로 하였다.) public interface UserRepository extends JpaRepository { // select를 통해 여러개의 값을 받는다면..

    [Spring Boot 프로젝트] AWS EC2로 Spring Boot 배포

    [Spring Boot 프로젝트] AWS EC2로 Spring Boot 배포

    1. Git 설치 아래 명령으로 git을 설치한다. sudo apt-get install git 아래 명령으로 프로젝트 파일을 다운받는다. git clone {레포지토리 주소} ex) git clone https://github.com/BananMoon/healing4u-mobileWeb.git 만약! 파일 수정 후에 git pull을 할 경우 1. git init을 먼저 해준 후에 2. git pull {원격 저장소명} {브랜치명} 을 해주면 된다. ex) git pull origin main 2. java 설치 (openjdk 11) Spring Boot 프로젝트에서 Java 버전을 11로 설정했기 때문에 EC2에도 java opendjk 11버전을 설치해야 한다. 아래 명령어를 입력했다. (※아래 ..