스프링 부트와 AWS로 혼자 구현하는 웹 서비스8 Spring '등록' 기능 구현 및 테스트 코드 작성 [Spring / 스프링 부트와 AWS로 혼자 구현하는 웹 서비스] 등록 기능 만들기 web > dto > PostsSaveRequestDto package com.izero.springboot.web.dto; import com.izero.springboot.domain.posts.Posts; import lombok.Getter; import lombok.NoArgsConstructor; @Getter @NoArgsConstructor public class PostsSaveRequestDto { private Long id; private String title; private String content; private String author; @Builder public PostsSaveRequestDto(String title, String content, S.. Web/📗 Spring 2022. 7. 18. Entity와 DTO [Spring / 스프링 부트와 AWS로 혼자 구현하는 웹 서비스] Entity 클래스와 Controller에서 쓸 Dto는 꼭 분리해야 함. Entity Entity 클래스는 실제 DB 테이블과 매핑되는 핵심 클래스로, 데이터베이스의 테이블에 존재하는 컬럼들을 필드로 가지는 객체 (DB의 테이블과 1:1로 매핑) 데이터베이스와 맞닿은 핵심 클래스. Entity를 기준으로 테이블이 생성되고, 스키마가 변경 됨. @Getter @NoArgsConstructor // 기본 생성자 자동 추가 (public Posts() {}와 같은 효과) @Entity // 테이블과 링크될 클래스임을 나타냄 (SalesManager.java -> sales_manager 테이블) public class Posts { @Id // 해당 테이블의 PK 필드 @GeneratedValue(strat.. Web/📗 Spring 2022. 7. 18. Service에서 비지니스 로직을 처리한다? [Spring / 스프링 부트와 AWS로 혼자 구현하는 웹 서비스] API를 만들기 위해 총 3개의 클래스 필요 Request 데이터를 받을 Dto API 요청을 받을 Controller 트랜잭션, 도메인 기능 간 순서를 보장하는 Service Service에서 비지니스 로직을 처리한다? (X) Web Layer 컨트롤러(@Controller)와 JSP/Freemarker 등 뷰 템플릿 영역 필터(@Filter), 인터셉터, 컨트롤러 어드바이스 등 외부 요청과 응답에 대한 전반적 영역 Service Layer @Service에 사용되는 서비스 영역 일반적으로 Controller와 Dao의 중간 영역에서 사용됨. @Transactional이 사용되어야 하는 영역 Repository Layer Database와 같이 데이터 저장소에 접근하는 영역 (Dao 영역과 유사) Dt.. Web/📗 Spring 2022. 7. 18. 롬복 소개 및 설치하기 [Spring / 스프링 부트와 AWS로 혼자 구현하는 웹 서비스] 롬복은 자바 개발 시 자주 사용하는 코드 Getter, Setter, 기본 생성자, toString 등을 어노테이션으로 자동 생성해 줌. 인텔리제이에서 플러그인으로 설치 가능, Ctrl + Shift + A > plugins > lombok 검색 후 설치 (이미 설치 된 경우 체크 누르기) Settings > Annotation Processor > Enable annotation processing 체크 Web/📗 Spring 2022. 7. 8. 테스트 코드 작성하기 [Spring / 스프링 부트와 AWS로 혼자 구현하는 웹 서비스] src > main > java 에서 오른쪽 클릭해서 springboot 패키지 생성 그 아래에 Application 클래스 생성 Application 클래스에 코드 작성 @SpringBootApplication 위치부터 설정을 읽어가는 것 SpringApplication.run()으로 내장 WAS 실행. package com.izero.springboot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; // SpringBootApplication 어노테이션이 있는 위치부터 설정을 읽어가므로, 클래스는 항상 프로젝트의 최상단에 위치하여야 .. Web/📗 Spring 2022. 7. 8. 테스트 코드 소개 (TDD) [Spring / 스프링 부트와 AWS로 혼자 구현하는 웹 서비스] 개요 TDD는 테스트가 주도하는 개발. 테스트 코드를 먼저 작성하는 것부터 시작. 레드 그린 사이클 항상 실패하는 테스트 코드를 먼저 작성하고 (Red) 테스트가 통과하는 프로덕션 코드를 작성하고 (Green) 테스트가 통과하면 프로덕션 코드를 리팩토링 (Refactor) 필요성 빠른 피드백 (톰캣을 재시작하면 1분 이상 소요되지만 테스트 코드 작성하면 바로 볼 수 있다.) 자동 검증 가능 (System.out.println() 사용 불필요) 개발자가 만든 기능 보호 (서비스의 모든 기증을 테스트 할 수 없기에, 이후 수정에서 기존 기능 보호하도록) 테스트 코드 작성 프레임워크 ( == xUnit : 개발환경(x)에 따라 Unit 테스트를 도와준다.) 오마이 옛날 정처기 문제...xUnit...😥 JUn.. Web/📗 Spring 2022. 7. 7. 그레이들 프로젝트를 스프링 부트 프로젝트로 변경하기 [Spring / 스프링 부트와 AWS로 혼자 구현하는 웹 서비스] build.gradle 변경 최종 코드 buildscript { // buildscript : 그래들(Gradle)에서 buildscript는 보통 별도의 외부 라이브러리를 가져와야 할 때 사용 ext{ // ext: build.gradle에서 사용하는 전역변수를 설정하겠다. springBootVersion = '2.1.7.RELEASE' } repositories { // repositories는 각종 의존성 (라이브러리) 들을 어떤 원격 저장소에서 받을 지 정함. 책에서는 jcenter도 사용하나, 현 시점 (22.07.07) 에 중지 되어, mavenCentral만 사용 가능 mavenCentral() jcenter() } dependencies { // spring-boot-grad.. Web/📗 Spring 2022. 7. 7. build.gradle dependencies의 compile과 testCompile이 작동하지 않는 문제 [Spring / 트러블 슈팅] 🎈 문제 정의 build.gradle에서 책에서 쓰라는 대로 따라가면 사진과 같이 아예 인식을 못한다. 🔑 원인 추론 jdk 버전 문제라고 생각 (X) compile 에서 implementation 과 api 로 변경되었다고 함. (O) compile과 implementation 차이 compile은 연결된 API 모두가 프로젝트에 의해 노출이 되고 implementation은 노출되지 않는다. api가 노출이 되면, API로직에서 유효성 검사 및 기타 원하지 않는 형태의 데이터가 들어와 보안의 위협이 돼서 골치 아파진다. A Web/📗 Spring 2022. 7. 7. 이전 1 다음