스프링부트 with JPA - yaml 설정

최준호·2024년 2월 3일

yml 설정

  • web.xml
  • root-context.xml
  • servlet-context.xml
    세가지를 합한게 application.yml 파일입니다.
server:
  port: 8080
  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
  • jasper

.jsp 경로를 설정한 이유는 스프링 부트는 기본적으로 jsp사용이 권장하기 않기 때문에 timeleaf 같은 다른 템플릿 엔진을 사용해야 한다. 하지만 jsp를 사용하기 위해서는 해당 구조로 폴더 구성을 한 뒤 세팅하여야 한다. (jasper)

  • com.mysql.cj.jdbc.Driver

datasource 의 mysql 드라이버에 cj가 들어간 이유는 mysql 6점대 이상 버전부터는 해당 드라이버를 사용하고 그 이전 드라이버는 cj가 없는 com.mysql.jdbc.Driver를 사용한다.

그 외 설명 추가 사이트 참고
https://getinthere.tistory.com/20


spring 기본경로

test를 하기 위해 먼저 yml의 spring 설정을 주석처리하였고 테스트용 컨트롤러 생성하여 연결시켜준다.

테스트로 사용할 home.html 파일로 생성.

http://localhost:8080/blog/temp/home

위 주소창에 넣고 사용하면 됩니다.

스프링부트는 이로써 @Controller 어노테이션은 파일을 리턴한다는 사실을 알아낼 수 있습니다.

jsp 파일 열기

  • src/main/resources/static 폴더 밑에 temp.jsp 파일을 만들어서 테스트를 해볼려고 합니다.
  • 이론상 Controller는 파일을 리턴하기에 이게 적용될거라고 생각이 들겠지만,

404 에러가 뜹니다. 파일을 찾을 수 없는거죠.
이게 왜 이럴까요?

파일을 찾을 수 없는 이유는 jsp파일은 정적인 파일이 아닙니다. 컴파일이 반드시 일어나야 파일을 읽어낼 수 있기때문에 스프링에서 파일을 가져오는 것만으로 읽어낼 수 없는 겁니다.

이를 해결하기 위해서는 컴파일을 일으켜주는 구조로 만들어주는겁니다!

src/main/webapp/WEB-INF/views/temp.jsp 로 위치를 조정시켜줍니다.
폴더를 생성하든, 파일을 새로 만들어주든
yml 파일에 만든 설정에 따르는겁니다.

주석처리한걸 다시 리셋을 시켜주고 위에 따르면

풀경로는

 /WEB-INF/views/ /temp.jsp.jsp 

로 될겁니다 이 상태로 리턴을 시켜주면 오류가 날겁니다 따라서, return "temp"로 수정해야합니다!

성공적으로 jsp를 출력시킬 수 있었습니다!

이로써 스프링 폴더에
src/main/resources/static 폴더는
정적인 파일을 두는 공간입니다.
인터넷 브라우저가 스스로 열 수 있는 파일을 두는 겁니다.

동적인 파일은 다른곳에 두는것이 맞고요
동적인 파일의 예는 jsp, thyleaf가 있습니다

profile
변화를 두려워하는 사람이 가장 불행한 사람이다.

0개의 댓글