SpringBoot/쇼핑몰 프로젝트 with JPA
[백견불여일타] 1장 개발환경구축
c0mmedes
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;