본문 바로가기

SpringBoot/Blog프로젝트 with JPA &데어프로그래밍님

12.28 TIL - application.yaml설정

본 포스트는 데어프로그랭밍님 스프링부트 블로그프로젝트 수강 후 작성한 내용입니다.

 

yaml설정

yaml을 설정한다는 것은 프로젝트 설정을 한다는 것이다. 이전에는 xml을 주로 사용했지만 가독성 때문에 최근에는 yaml을 더 많이 사용한다.

yaml규칙

-키와 value사이에 한칸이 무조건 떨어져 있어야 한다. ex. context-path: /blog

-들여쓰기 규칙은 무조건 스페이스 두칸

 

java project에서는 root-context.xml에는 객체가 한번만 있으면 되는, 한번만 new되고 더이상 new되지 않는 데이터베이스와 같은 애들을 설정하고 servlet-context.xml에는 지속적으로 계속 new해서 만들어서 사용하는 애들을 설정한다.

하지만 스프링에서는 aplication.yaml에서 다 한다.

블로그 프로젝트에 진입하기 직전에 application.yaml을 읽고 프로젝트를 읽는다.

application.yaml은 src/main/resources안에 있음

 

application.yaml코드

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

1)server 부분

context-path : 내 프로젝트에 들어가기 위한 진입경로.

port를 8000, context-path를 /blog로 설정했기 때문에 경로가 http://localhost:8000/blog/~ 로 변경됨.

이 부분을 설정하지 않으면 default인 http://localhost:8080/~이다

 

2)spring부분

스프링에서 @Controller가 붙은경우 file을 리턴해준다. 이때 스프링의 파일 리턴 기본경로는 src/main/resources/static이다. 뒤에 / 가 붙어있지 않기 때문에 return에 /filename.~ 를 써야한다. 또한 위의 경로는 static한, 정적파일(브라우저가 인식할 수 있는 파일을 저장)을 저장하는 폴더이기 때문에 동적인 파일을 해당 폴더에 두면 스프링이 인식하지 못한다. 앞으로 프로젝트를 진행할 때 jsp파일을 사용할 것인데 jsp는 동적파일이고 스프링에서 기본으로 지원해주고 있지 않기 때문에 pom.xml에 jsp의존성을 설정해주고 src/main에 webapp/WEB-INF/views라는 폴더를 만들어서 여기에 jsp파일 저장하고 application.yaml에 위에 코드의 spring: 부분처럼 적어주어야한다.

해당 코드에서 prefix는 컨트롤러가 리턴할 때 앞에 붙여주는 경로명, suffix는 컨트롤러가 리턴할 때 뒤에 붙여주는 경로명 이다. prefix를 / 로 끝냈기 때문에 이때는 return할 때 /을 붙여주지 않고 suffix에 .jsp를 했기 때문에 리턴할 때 파일명을 붙이지 않는다.

댓글