Digking's cave

My First Blog Project (4) : Maven / Lombok / Yaml / Jsp 설정 본문

Spring/My First Blog Project

My First Blog Project (4) : Maven / Lombok / Yaml / Jsp 설정

디깅 2022. 12. 16. 11:05
728x90

1. Maven 

Maven은 자바용 프로젝트 관리도구로 프로젝트의 전체적인 라이프사이클을 관리한다.

 

중앙저장소에 라이브러리를 넣어두고, 중앙저장소를 통해서 다운을 받는다.

필요한 라이브러를 pom.xml에 작성해두고 프로젝트 시작할 때 자동으로 다운받는다.

다운받은 파일은 .m2 안에 repository 폴더에 저장된다.

 

2. Lombok 설정하기

 

2-1) 파일 -> 설정 -> 플러그인 -> Lombok 검색 후 설치

2-2) dependency 설정하기

pom.xml 에 아래 추가

		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>

 

2-3) Annotation Processing 설정하기

파일 -> 설정 -> 빌드,실행,배포 -> 컴파일러 -> 어노테이션프로세서

 

3. Lombok 활용하기

@Data  : @Getter, @Setter, @ToString 등 관련 어노테이션을 한 번에 설정
@NoArgsConstructor : 파라미터 없는 빈 생성자
@AllArgsConstructor  : 모든 파타리터가 있는 생성자

Member.java

package com.cos.blog.test;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Member {

    private int id;
    private String username;
    private String password;
    private String email;
    
    @Builder
    public Member(int id, String username, String password, String email){
        this.id = id;
        this.username = username;
        this.password = password;
        this.email = email;
    }
}

 

@Builder

 

원하는 파라미터만 + 순서 상관없이 입력하여 생성자를 만들 수 있다. 

 

@Builder 활용하여 생성하는 예시👇

HttpControllerTest1.java

package com.cos.blog.test;

import org.springframework.web.bind.annotation.*;

@RestController
public class HttpControllerTest1 {

    @GetMapping("http/get")
    public String getTest_2(Member member){
        return "get 요청 "+ member.getId()+" & "+member.getUsername()+" & "+member.getPassword() +" & " + member.getEmail();
    }
    @PostMapping("http/post")
    public String postTest(@RequestBody String text){
        return text;
    }
    @PutMapping("http/put")
    public String putTest(){
        return "put 요청";
    }

    @DeleteMapping("http/delete")
    public String deleteTest(){
        return "delete 요청";
    }

    @GetMapping("/http/lombok")
    public String LombokTest(Member member){
        Member m = Member.builder()
                .id(member.getId())
                .email(member.getEmail())
                .password(member.getPassword())
                .username(member.getUsername()).build();
        System.out.printf(m.getUsername());
        m.setUsername("test");

        System.out.printf(m.getId()+" , "+m.getPassword()+" , "+m.getUsername()+" , "+m.getEmail());
        return "gg";

    }
}

 

3. yaml 설정하기

yaml이란?

https://www.inflearn.com/questions/16184

 

yaml파일 이란 무엇인가요 - 인프런 | 질문 & 답변

안녕하세요 강사님 너무 질문이 많아서 죄송합니다. yaml파일 이라는 단어를 요 근래 많이 듣고 있는데 정확인 무슨 파일인가요 검색해 보지도 않고 무조건 질문을 드리는것 같아서 죄송하지만

www.inflearn.com

application.yml

-> web.xml , root-context.xml , servlet-context.xml 의 합본

server:
  port: 8000
  servlet:
    context-path: /blog
    encoding:
      charset: UTF-8
      enabled: true
      force: true
    
spring:
  mvc:
    view:
      prefix: /WEB-INF/views/
      suffix: .jsp
      
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/blog?serverTimezone=Asia/Seoul
    username: cos
    password: cos1234
    
  jpa:
    open-in-view: true
    hibernate:
      ddl-auto: create
      naming:
        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
      use-new-id-generator-mappings: false
    show-sql: true
    properties:
      hibernate.format_sql: true

  jackson:
    serialization:
      fail-on-empty-beans: false

context-path : 진입주소 설정

datasource : DB 연결 설정

 

TempControllerTest.java

package com.cos.blog.test;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class TempControllerTest {
    @GetMapping("/temp/home")
    public String tempHome(){
        System.out.println("hello");
        return "/home.html";
    }

    @GetMapping("/temp/jsp")
    public String tempJsp(){
        return "test";
    }
}

@Controller 는 경로 아래에 있는 해당 파일을 return해준다.

파일리턴 기본경로 : src/main/resources/static

리턴명 : /home.html

풀경로 src/main/resources/static/home.html

 

test.jpa

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <p>jsp test</p>
</body>
</html>

 

jsp로 return했을 때 jsp가 동작하기 위해서 아래 설정 필요

(jsp는 동적인 파일이기 때문에 인식 못함)

pom.xml

		<!-- JSP 템플릿 엔진 -->
		<dependency>
			<groupId>org.apache.tomcat.embed</groupId>
			<artifactId>tomcat-embed-jasper</artifactId>
		</dependency>

 

application.yml

spring:
  mvc:
    view:
      prefix: /WEB-INF/views/
      suffix: .jsp

prefix : @Controller 가 return을 할 때 앞에 붙여주는 경로

surfix : 뒤에 붙여주는 경로

 

prefix : /WEB-INF/vies

surfix : .jsp

리턴값 : test

풀경로 /WEB-INF/vies/test.jsp

 

 

반응형