스프링부트와 AWS로 혼자 구현하는 웹서비스 - 0103
오늘한 일
- 12시에 일어나서 면접 과제를 풀었다( C#을 응용한 간단한 DB연동 후 CRUD)
 - 주민등록증 재발급 수령하기
 - 운동하기
 - 스프링부트 공부 (✅)
 
이제는 ?
- Application 생성(
 @SpringBootApplication)- HelloController, HelloControllerTest 클래스 생성, 어노테이션 파악 및 실습
 - 진도 계속 나아가기
 
SpringApplication
@SpringBootApplication : 
- 스프링부트의 자동설정, 스프링 Bean 읽기와 생성을 모두 자동으로 설정.
 - 해당 어노테이션이 있는 위치부터 설정을 읽어가기 때문에 이 클래스는 항상 프로젝트의 최상단에 위치시킨다.
 
SpringApplication.run ? :
- 내장 WAS를 실행시키는 역할.
 
HelloController
@RestController : 
- 컨트롤러를 JSON으로 반환. 이전에는
@ResponseBody를 각 메서드마다 선언한 것을 한번에 사용하는 의미. 
@GetMapping :
- HTTP의 GET방식 요청을 받는 API를 생성함.
 - 이전에는 
RequestMapping(value="/hello" method = RequestMethod.GET)으로 사용됐었음. 
HelloControllerTest
@RunWith(SpringRunner.class) :
- SpringRunner라는 스프링 실행자를 사용.
 - 스프링부트 테스트와 JUnit 사이의 연결자 역할을 함(JUnit에 내장된 실행자 외에 다른 실행자 실행)
 
@WebMvcTest(controllers = HelloController.class) : 
- 여러 테스트 어노테이션중 Web에 집중할 수 있는 어노테이션.
 - 선언하면 
@Controller,@ControllerAdvice등 사용 가능. 단,@Service,@Repository,@Component는 X. 
@Autowired :
- 스프링 Bean을 주입 받음.
 
MockMvc :
- Web API 테스트 시 사용, MVC 테스트 시작점, HTTP GET, POST에 대한 API 테스트 가능.
 
mvc.perform(get("/hello")) : 
- MockMVC를 통해 /hello 주소로 GET 요청을 받음
 
.andExpect(status().isOk()) :
- 결과 검증 Http Header의 Status 검증 (200, 404, 500 등) ▶ 200인지 아닌지를 검사함
 
.andExpect(content().string(hello)) :
- 응답 본문의 내용 검증, hello를 리턴하는데 이 값이 맞는지 검증함.
 
Controller 실행 결과
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController 
public class HelloController {
    @GetMapping("/hello") 
    public String hello() {
        return "hello";
    }
}

깔끔하게 hello 출력완료!
Lombok
- 롬복은 
GetterSetter생성자toString을 어노테이션으로 자동 생성해준다. - Spring Boot에서 롬복을 사용하는 순서는 아래와 같다.
- build.gradle 
compile('org.projectlombok:lombok')작성 - plugins -> marketplace(롬복 설치)
 - Build/Compiler/Annotation Processors -> Enable annotation processing 체크
 
 - build.gradle 
 
DTO를 생성한다.
// MAIN
import lombok.Getter;
import lombok.RequiredArgsConstructor;
@Getter 
@RequiredArgsConstructor 
public class HelloResponseDto {
    private final String name;
    private final int amount;
}
@Getter :
- GET 메소드 생성 역할
 
@RequiredArgsConstructor :
- final 필드가 포함된 생성자를 생성해줌.
 
 //TEST
import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThat;
public class HelloResponseDtoTest {
    @Test
    public void 롬복_기능_테스트(){
        // given
        String name = "test";
        int amount = 1000;
        // when
        HelloResponseDto dto = new HelloResponseDto(name, amount);
        // then
        assertThat(dto.getName()).isEqualTo(name);
        assertThat(dto.getAmount()).isEqualTo(amount);
    }
}
 @assertThat :
- 테스트 검증 라이브러리의 검증 메소드.
 - 메소드 체이닝이 지원되어 isEqualTo와 같이 메소드를 이어 사용 가능
 
isEqualTo :
- 동등 비교 메소드
 - assertThat에 있는 값과 비교해서 같을때만 성공임.
 
오늘도 목포량 만큼 열심히 공부했다. 내일부터는
JPA- 자바 표준ORM을 공부할 것이다.
Author And Source
이 문제에 관하여(스프링부트와 AWS로 혼자 구현하는 웹서비스 - 0103), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@seunghan-baek/스프링부트와-AWS로-혼자-구현하는-웹서비스-0103저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)