티스토리 뷰
[SpringBoot + JPA] tutorial: 스프링 부트 쇼핑몰 프로젝트 with JPA -2. Controller, DTO(lombok)
돔돔이 2024. 7. 4. 00:00
스프링 부트 쇼핑몰 프로젝트 with JPA 라는 책을 읽으며 정리한 내용입니다,
이미 스프링부트로는 개발을 많이 해보았으나 JPA를 공부하기 위해 이 책을 골랐습니다.
이전 포스트를 보려면 아래 링크를 클릭하세요.
[SpringBoot + JPA] tutorial: 스프링 부트 쇼핑몰 프로젝트 with JPA -1. 애플리케이션 생성 및 설정하기
@RestController란 Restful Web API를 좀 더 쉽게 만들기위해 스프링 프레임워크 4.0에 도입된 기능입니다.
@RestController는 @Controller와 @ResponseBody를 합쳐놓은 어노테이션으로, ResponseBody 어노테이션은 html파일을 따로 생성하지 않아도 웹 브라우저에 문자열을 그대로 출력할 수 있습니다.
Controller는 뷰와 연결되어, 리턴된 html 파일을 띄워 보여줍니다.
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class testController{
@GetMapping(value = "/")
public String HelloWorld(){
return "Hello World";
}
}
// 아래와 같음
@Controller
@ResponseBody
public class testController{
@GetMapping(value = "/")
public String HelloWorld(){
return "Hello World";
}
}
@GetMapping은 클라이언트의 요청을 처리할 URL을 매핑합니다.
method가 GET인 경우 GetMapping을, POST인 경우 PostMapping을, 둘다 지원가능하게끔 하려면 @RequestMapping을 사용하면 됩니다.
프로그램을 실행시켜 띄워보면, Hello world가 정상출력됨을 확인할 수 있습니다.
Lombok 라이브러리란?
: 반복적인 Getter/Setter, ToString과 같은 반복적인 자바코드를 컴파일할 때 자동으로 생성해주는 라이브러리입니다.
Lombok 라이브러리를 사용하려면 Lombok 플러그인을 설치해야합니다.
intellij 상단메뉴 File > Seettings를 클릭합니다.
Settings 설정창이 나오면, Plugin을 선택하고 Lombok을 검색하여 설치합니다.
설치 후 다시 Settings 설정창에서,
Build, Execution, Deployment > Compiler > Annotation Processors 메뉴로 들어간 후
Enable annotation processing 체크박스에 체크한 후 Apply를 눌러줍니다.
이 설정은 Lombok을 사용하는 프로젝트마다 설정해주어야 합니다.
마지막으로 pom.xml에 Lombok을 추가해주면 끝입니다.
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
...
</dependencies>
Lombok 라이브러리에서 자주 사용하는 어노테이션들을 살펴보겠습니다.
@Getter/Setter | 속성들에 대한 Getter/Setter 메소드 생성 |
@ToString | toString() 메소드 생성 |
@ToString(exclude={"변수명"}) | 원치 않는 속성을 제외한 toString() 메소드 생성 |
@NonNull | 해당 변수가 null인지 체크, NullPointerException 예외 발생. |
@EqualsAndHashCode | equals()와 hashCode() 메소드 생성 |
@Builder | 빌더 패턴을 이용한 객체 생성 |
@NoArgsConstructor | 파라미터가 없는 기본 생성자 생성 |
@RequiredArgsConstructor | 초기화되지 않은 FInal, @NonNull 어노테이션이 붙은 필드에 대한 생성자 생성 |
@AllArgsConstructor | 모든 속성에 대한 생성자 생성 |
@Log | log 변수 자동 생성 |
@Value | 불변(immutable) 클래스 생성 |
@Data | @Tostring, @EqualsAndHashCode, @Getter, @Setter, @RequiredArgsConstructor를 합친 어노테이션 |
Lombok의 간단한 예제 DTO 코드입니다.
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@ToString
public class dto {
private String name;
private Integer age;
}
위 DTO를 사용한 컨트롤러입니다.
dto파일에는 getter, setter 메소드가 없지만 lombok으로 인해 정상적으로 동작하는 것을 확인할 수 있습니다.
@RestController
public class testController{
@RequestMapping(value = "/")
public String HelloWorld(){
return "Hello World";
}
// dto 사용
@GetMapping(value = "/test")
public dto test(){
dto DTO = new dto();
DTO.setName("hoon");
DTO.setAge(26);
return DTO;
}
}
다음 게시물을 보려면 아래 링크를 눌러주세요!
[SpringBoot + JPA] tutorial: 스프링 부트 쇼핑몰 프로젝트 with JPA -3. JPA