-
[백견불여일타] 1장 개발환경구축SpringBoot/쇼핑몰 프로젝트 with JPA 2022. 8. 16. 13:44
Build Tool - Maven
java 8
Spring boot 2.7.2
Packaging - Jar
Dependency - Spring web
MySQL
Maven - 자바 프로젝트의 빌드를 자동화해주는 빌드 툴
Maven에서 의존성을 추가한다 -> 다른 라이브러리를 사용하기 위해서 추가하는 것
application.properties
server.port = 80 // 실행할 포트 설정 application.name = spring-demo
SpringDemoApplication.java
package com.example; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController @SpringBootApplication public class SpringDemoApplication { public static void main(String[] args) { SpringApplication.run(SpringDemoApplication.class, args); } @GetMapping(value = "/") public String HelloWorld(){ return "Hello world"; } }
@RestController
- Restful Web API를 좀 더 쉽게 만들기 위해 스프링 프레임워크 4.0에 도입된 기능
- @Controller + @ResponseBody(자바 객체를 HTTP 응답 본문의 객체로 변환해 클라이언트에게 전송)를 합쳐놓은 어노테이션, 이를 통해 따로 html 파일을 만들지 않고 웹 브라우저에 Hello world라는 문자열을 출력할 수 있다.
- 클래스 이름 위에 선언하면 해당 클래스를 요청을 처리하는 컨트롤러로 사용됨
@GetMapping
- 컨트롤러 클래스에 @GetMapping 어노테이션을 이용해 클라이언트의 요청을 처리할 URL을 매핑한다.
- 현재는 서버의 루트로 오는 요청을 처리할 수 있도록 value="/"로 선언
LoomBok 라이브러리
- Getter/Setter, ToString 과 같은 반복적인 자바 코드를 컴파일 할 때 자동으로 생성해주는 라이브러리
setting -> plugin -> lombok 설치
pom.mxl
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency>
Lombok 의존성 추가
Lombok 라이브러리에서 자주 사용되는 어노테이션
- @Getter/Setter
- @ToString
- @ToString(exclude={"변수명"}) - 원하지 않는 속성을 제외한 toString() 메소드 생성
- NonNull - 해당 변수가 null 체크, NullPointerException 예외 발생
- @EqualsAndHashCode - equals()와 hashCode() 메소드 생성
- @Builder - 빌더 패턴을 이용한 객체 생성
- @NoArgsConstructor - 파라미터가 없는 기본 생성자 생성
- @AllArgsConstructor - 모든 속성에 대한 생성자 생성
- @RequiredArgsConstructor - 초기화되지 않은 Final, @NonNull 어노테이션이 붙은 필드에 대한 생성자 생성
- @Log - log 변수 자동 생성
- @Value - 불변(immutable) 클래스 생성
- @Data - @ToString, @EqualsAndHashCode, @Getter/Setter, @RequiredArgsConstructor 를 합친 어노테이션
UserDto.java
package com.example; import lombok.Getter; import lombok.Setter; import lombok.ToString; @Getter @Setter @ToString public class UserDto { private String name; private Integer age; }
TestController.java
package com.example; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class TestController { @GetMapping(value = "/test") public UserDto test(){ UserDto userDto = new UserDto(); userDto.setAge(20); userDto.setName("hoon"); return userDto; } }
target 폴더의 UserDto.class
// // Source code recreated from a .class file by IntelliJ IDEA // (powered by FernFlower decompiler) // package com.example; public class UserDto { private String name; private Integer age; public UserDto() { } public String getName() { return this.name; } public Integer getAge() { return this.age; } public void setName(final String name) { this.name = name; } public void setAge(final Integer age) { this.age = age; } public String toString() { return "UserDto(name=" + this.getName() + ", age=" + this.getAge() + ")"; } }
이처럼 Lombok 의 어노테이션을 통해 메소드가 자동으로 생성된 것을 볼 수 있다.
MySQL 설치 후 show DB 생성
create database shop default character set utf8 collate utf8_general_ci; show databases;
'SpringBoot > 쇼핑몰 프로젝트 with JPA' 카테고리의 다른 글
[백견불야일타] 6장 상품 등록 및 조회하기 (0) 2022.10.08 [백견불야일타] 5장 연간 관계 매핑 (1) 2022.09.20 [백견불야일타] 4장 스프링 시큐리티를 이용한 회원 가입 및 로그인 (0) 2022.09.07 [백견불야일타] 3장 Thymeleaf 학습하기 (0) 2022.08.26 [백견불야일타] 2장 Spring Data JPA (0) 2022.08.19