Back-end/Spring Boot 28

[Spring Boot] REST API 생성 순서

이전에 https://imbay.tistory.com/331, https://imbay.tistory.com/97 에서 BaseEntity와 Repository - Service - Controller 개념은 작성했었지만, 시간이 좀 지나서 다시 순서를 되짚어보려고 한다.(이전에 면접에서 API 개발시 첨부터 끝까지 말로 코딩을 해보라 하셔서,, 갑자기 머리가 하얘져서 잘 말하지 못한 것 같아 다시 순서 되새겨봅니다,,) 1. BaseEntity 클래스 생성 1-1. 각 도메인마다 엔티티 클래스를 생성하기 전에, 중복되는 컬럼은 BaseEntity에 미리 만들어 놓는다.예로 create나 update된 날짜는 각 테이블마다 존재하기 때문에 BaseEntity에 createDate과 updateDate 컬..

[Spring Boot] AWS S3를 사용한 이미지 업로드 방법

AWS S3 버킷 생성버킷 생성https://imbay.tistory.com/129 참고버킷 정책 설정AWS S3- 버킷- 해당 버킷 클릭- 권한- 버킷 정책버킷 정책을 편집을 누르고 아래 코드를 추가해준다.{ "Version": "2012-10-17", "Statement": [ { "Sid": "PublicReadGetObject", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::{버킷이름}/*" } ]} 스프링부트 이미지 업로드 구현build.grad..

[Spring Boot] Repository - Service - Controller

Repository - Service - Controller Repository - Service - Controller 순으로 JPA 사용하기 Repository 인터페이스 생성 어노테이션 주입 @Repository JpaRepository 상속받기 (extends) 기본 함수 findAll findById save (update, insert) delete 사용자 생성 함수 사용자가 조합하여 생성 가능 예시 List findAllByReplyBoardIdx(Long replyBoradIdx); void deleteById(Long replyIdx); Service 클래스 생성 어노테이션 주입 @Service @RequiredArgsConstructor Repository 생성자 주입 final pri..

[Spring Boot] Scheduler

Scheduler 스케줄러 관련 어노테이션 @EnableAsync 비동기적으로 처리하도록 제공하는 어노테이션 각기 다른 스레드에서 실행된다. @Async 해당 메소드 로직이 시작되는 시간을 기준으로 milli sec 간격으로 실행 이전 작업이 완료될 때까지 다음 작업이 진행되지 않음 @Scheduled(fixedRate = n) 스케줄 옵션을 설정하는 어노테이션 해당 어노테이션을 사용하면 일정한 시간 간격이나 특정 시간에 코드가 실행되도록 설정할 수 있다. n에는 초를 설정하며, 값이 1000이면 1초이다. 속성 fixedRate 작업 수행시간과 상관없이 일정 주기마다 메소드 호출 fixedDelay 작업을 마친 후부터 주기 타이머가 돌아 메소드 호출 initialDelay 스케줄러에서 메소드가 등록되자..

[Spring Boot] TDD

테스트 주도 개발 (Test Driven Development, TDD) 테스트 관련 어노테이션 및 클래스 @WebMvcTest @Controller, @RestController가 설정된 컨트롤 클래스를 테스트한다. @Service, @Repository에는 사용할 수 없다. MockMvc 웹 API를 테스트할 때 가상의 HTTP 요청을 만들어주는 클래스이다. @Disabled 테스트 메소드를 비활성화 시키는 어노테이션 @BeforeAll 테스트 클래스 기준으로 테스트 메소드들이 실행되기 전에 한번만 실행 @AfterAll 테스트 클래스 기준으로 테스트 메소드들이 실행된 후에 한번만 실행 예로 리소스 정리 같은 코드 작성 @BeforeEach 각 테스트 메소드가 실행되기 전에 매번 실행 @AfterEa..

[Spring Boot] URI 어노테이션

URI 어노테이션 2가지 (경로 설정) @RequestParam URI 형식 localhost:8080/update-form?index=1 메서드 구현 // 관리자 페이지 - 회원목록 상세 출력 // localhost:8080/update-form?index=1 @GetMapping("/update-form") public String viewUpdateForm(@RequestParam int index, Model model) { model.addAttribute("index", index); Member member = memberList.get(index-1); model.addAttribute("member", member); return "update-form"; } html에서 경로이동 설정 ..

[Spring DB] DB 관련 어노테이션, 데이터 모델링 클래스

DB 관련 어노테이션 @Entity DB 테이블과 1:1로 매칭되는 JPA 클래스 @Table 클래스 이름이 테이블 이름으로 자동으로 설정되는데, 이럴때 테이블명 직접 지정할 때 사용 @Id 기본키 id 열로 사용 @GeneratedValue(strategy = GenerationType.IDENTITY) GenerationType 종류 IDENTITY MySQL, MariaDB, PostreSQL, H2DB SEQUENCE Oracle, PostreSQL AUTO 자동 선택 @Column(name=”컬럼명”) 해당 멤버 변수의 컬럼명 지정 @DateTimeFormat(pattern = “yyyy-mm-dd”) Date 데이터를 가져올 때 날짜 형식 사용자 지정 가능 @RequestParam @Model..

[Spring Boot] Model에서 Rest API로 변환

개념 정리 이전까지는 @RequestParam으로 사용자 입력 값을 가져오고, Model을 사용하여 addAtribute로 데이터를 보내서 출력했다. 하지만 REST API를 사용한다면 JSON 형식의 데이터를 주고 받는다. @RequestBody로 사용자 입력 값을 가져오고 @ResponseBody로 데이터를 보내준다. 그리고 View만 출력하는 ViewController와 REST API 메서드만 모여있는 ApiController를 구분해서 구현한다. ApiController 클래스는 @RestController 어노테이션을 준다. (@RestController = @Controller + @ResponseBody) RestController의 주요 메소드는 GET, POST(create), DELE..

[Spring Boot] Test

Spring Boot Test Test 관련 어노테이션 @SpringBootTest 테스트 환경을 기본 설정해주는 어노테이션 @Test 테스트할 메소드에 붙이는 어노테이션 @DisplayName(”메소드 이름”) 해당 어노테이션에 메소드 이름을 적으면 콘솔에 출력된다. @BeforeAll 해당 메소드가 클래스 초기화시(테스트 실행 시 시작할 때) 한 번 수행되도록 하는 어노테이션 static 메소드로 생성 (static void 메소드명() {…}) @BeforeEach 해당 메소드가 @Test 메소드를 호출시마다 한 번 수행되도록 하는 어노테이션 void 메소드명() {…} 테스트 방법 build.gradle에 아래 코드 추가 testCompileOnly 'org.projectlombok:lombok'..

728x90