ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백견불여일타] 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;

     

    댓글

Designed by Tistory.