[Spring Boot] Blog Project - Yaml 설정

deannn.Park·2021년 6월 6일
1

Spring Boot - Blog Project

목록 보기
10/11
post-thumbnail

1. Yaml이란,

아래의 포스트를 확인하면 된다.
Yaml 이란

2. yml 설정

application.yml

application.yml은 Spring legacy에서의 web.xml, root-context.xml, servlet-context.xml의 합본이다.

즉, application.yml은 이 프로젝트에서 사용하는 설정값들을 관리하는 파일이다.

이전에 application.yml에 mysql 설정을 적은 적이 있다. (datasource 부분)
아래의 코드를 application.yml에 붙여넣을 것인데 datasource 부분만 이전에 사용했던 코드로 사용한다. (username, passowrd 때문)

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: deannn
    password: deannn123
    
  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

server

port

서버에 접속하는 포트를 설정하는 것이다. 기본값은 8080이다. 이 포트를 8000으로 바꾸면 http://localhost:8000으로 접속해야 한다.

context-path

context-path는 해당 프로젝트를 실행했을 때 root에 대당하는 URI를 지정해주는 것이다.
기본값은 /이다. 따라서 여태까지는 http://localhost:8080으로 접속하면 서버에 접속할 수 있었다.
context-path를 /blog로 설정하게 되면 http://localhost:8080/blog에 접속해야 서버로 접속할 수 있다.

이 상태에서 서버를 실행해서 localhost:8080/blog/http/lombok에 접속하면 이전에 localhost:8080/http/lombok에 접속한 것과 같은 결과를 보여주는것을 알 수 있다.

spring

mvc - view 를 설명하기 전에,
@Controller 어노테이션은 @RestController와 다르게 파일을 리턴해준다.
예를 들어

public class TempControllerTest {
	@GetMapping("temp/home")
    public String tempHome() {
    	return "/home.html";
    }
}

이러한 클래스가 있다고 하면, localhost:8000/blog/temp/home에 접속하면 파일 리턴의 기본 경로인 src/main/resources/static에 파일명(리턴값)을 붙인 경로의 파일을 리턴한다.
위 경우에는 src/main/resources/static/home.html을 리턴하는데, return 값 맨 앞에 /가 없으면 파일 경로가 src/main/resources/statichome.html로 되서 파일을 못찾게 된다.
그리고 static 폴더 아래에는 항상 브라우저가 인식할 수 있는 정적 파일만 넣어야 한다.

mvc - view

해당 프로젝트에서는 JSP를 사용할 것이다. Spring Boot에서 JSP를 정식으로 지원하지 않기 때문에 JSP 템플릿 엔진을 pom.xml에 따로 추가하고 주석했는데, 주적을 풀고 적용한다.

그리고 파일을 리턴해야 할 때(@Controller 어노테이션 사용)가 있는데, JSP 파일을 리턴해야 할 때도 있다. 하지만 static 폴더에는 정적 파일만 넣어야 하므로 jsp 파일을 넣게 되면 인식이 되지 않는다.

이를 해결하게 위해 src/main/webapp/WEB-INF/views라는 경로의 디렉터리를 만든다. 그리고 그 안에 jsp 파일을 넣어준다.
그리고 static 디렉터리가 아닌 views라는 디렉터리를 향하도록 설정을 해야 한다.
위의 코드에서 mvc: view: 아래에 보면 prefixsuffix가 있다. prefix는 접두어, suffix는 접미어라고 생각하여 prefix는 파일명 앞에 붙고 suffix는 파일명 뒤에 붙는다. 브라우저로 리턴할 파일의 경로가 된다.

위와 같이 test.jsp이라고 하고 리턴값이 test이면 풀 경로가
/WEB-INF/views/test.jsp가 된다.

테스트를 위해 src/main/java/com.***.blog/testTempControllerTest.java 파일을 만들고 아래의 코드를 입력한다.

@Controller
public class TempControllerTest {

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

그리고 위에서 설명한 것처럼 src/main/webapp/WEB-INF/views에 test.jsp 파일을 만들고 안에 아무 내용이나 넣는다.

서버를 실행 후에 http://localhost:8000/blog/temp/jsp에 접속한다.

위와 같이 test.jsp 안의 내용을 보여주는데, 이는 톰캣이 jsp 파일을 컴파일하여 html로 변환하여 리턴하는 것이다.

이렇게 yml 설정과 jsp 연결이 끝났다.

profile
컴퓨터 관련 여러 분야 공부중

0개의 댓글