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;