Spring/Spring 블로그만들기

[Springboot] 나만의 블로그 만들기 - 9. yml설정하기

개발자하소서 2022. 3. 21. 10:50
728x90
반응형
SMALL

📌 yml 설정하기

 

1. yml 이란

 

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

 

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

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

www.inflearn.com

 

 

2. yml 설정

 

server:
  port: 8081
  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

 

 

 (1) server & context-path

server:
  port: 8081
  servlet:
    context-path: /blog
    encoding:
      charset: UTF-8
      enabled: true
      force: true

    

 - 즉, 이것은 localhost:8081/blog/ 형식으로 들어가야한다는 뜻

 

 

 (2) spring boot의 동작원리에 대해 알아보자 

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

 

 

 1. 우선 TempControllerTest라는 클래스를 하나 만든다

 

package com.cos.blog.test;

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

@Controller
public class TempControllerTest {

	// http://localhost:8081/blog/temp/home
	@GetMapping("/temp/home")
	public String tempHome() {
		System.out.println("tempHome()");
		return "home.html";
	}
}

 

 

2. 실행시켜보면 404가 뜨는데, home.html.jsp파일을 찾을 수 없다는 문구가 뜬다.

  그 이유는 우리가 아까 yaml에서 경로를 따로 저장해놓았기 때문이다.

3. 다시 yaml 파일에 들어가서 우리가 지정한 경로부분을 주석처리하고 다시 저장한다.

 

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

 

4. 그런다음 resources/ static 에서 home.html 파일을 하나 만든다 

 

 

 

5. 재실행해보면 다시 404가 뜨는데, 이번에는 아까와 달리 경로가 뜨질 않는다.

  'no message available'

 

 

6. 일반적으로 @Controller라는 어노테이션이 붙으면 아래 테스로 만든

   tempHome이라는 메서드는 파일을 리턴하게 되는데, 

   그 중에서도 기본적인 리턴경로는 src/main/resources/static에 있는 것을 리턴한다.

   하지만, static에 아까 html파일을 만들었음에도 불구하고 리턴되지 않았던 이유는

   경로명을 정확히 뒤에 home.html을 붙여야 하기때문이다.

package com.cos.blog.test;

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

@Controller
public class TempControllerTest {

	// http://localhost:8081/blog/temp/home
	@GetMapping("/temp/home")
	public String tempHome() {
		System.out.println("tempHome()");
		// 파일리턴 기본경로가 : src/main/resources/static
		// 리턴명을 /home.html이라고 해야 반응한다.
		// 즉, return 다음에 슬래시를 붙여서 /home.html이라 리턴명을 쳐줘야 파일을 읽는다는 것이다
		// 풀경로 : src/main/resources/static/home.html
		return "/home.html";
	}
}

 

 

**여기서 @RestController와 차이점을 알수있는데, 

  @RestController는 리턴값의 문자 그대로를 반환하였다면, 

  @Controller는 src/main/resources/static 경로 아래의 파일을 리턴한다.

 

*** 그래서 우리는 보통 jsp파일을 리턴하는데 보통 springboot에서는 jsp파일을 인식하지 않기에 

   pom.xml에 jsp 를 dependcy로 추가하는 것이고, 

   또한 static에 jsp파일을 넣으면 인식이 안되는데 왜냐면 static에 들어갈 파일들은 정적인 파일인 반면에

   jsp파일은 동적인 파일이기 때문이다. 그렇기에 jsp파일을 읽기위해서 경로를 바꿔주어야 하는데

 

 

7.  src/main에다가 webapp/WEB-INF/view라는 폴더를 생성한다. 

    그런다음 view안에다가 jsp파일을 넣고 

 

 

 

 

8. yml파일에서 아까 주석처리 한것을 푼다.

   여기서 prefix란 controller가 리턴을 할때 앞의 경로를 뜻하고

   suffix란 뒤에 붙는 경로를 뜻하는데.

   즉,

      prefix : /WEB-INF/views/

      suffix : .jsp

      풀네임 : /WEB-INF/views/test.jsp 

   가 되는 것이다.

 

 

728x90
반응형
LIST