2023.01.10.TUE

ronglong·2023년 1월 10일
0

[Spring MVC] 애플리케이션 빌드 / 실행

  1. 빌드 : 소스 코드를 실행 가능한, 독립된 소프트웨어 어플리케이션으로 만드는 과정
    ↓관련 용어가 정리된 블로그
    https://junroot.github.io/programming/Java%EC%9D%98-%EB%B9%8C%EB%93%9C%EC%99%80-%EB%B0%B0%ED%8F%AC/
  • IntelliJ IDE를 이용한 빌드
    : 우측 상단의 Gradle 탭 > 프로젝트 이름 > Tasks > build > bootJar || build 더블 클릭 > 빌드 정상 종료시, build/libs 디렉토리에 Jar 파일이 생성됨
    • bootJar 실행하면, Executable Jar 파일을 생성하기 위한 task만 실행
    • build 실행하면, 빌드와 관련된 모든 task를 실행. 실행 가능한 Executable Jar 파일 이외에 plain Jar 파일 하나를 더 생성 (총 2개)
  • Gradle Task를 이용한 빌드 (using terminal)
    : 프로젝트가 위치한 폴더로 이동 > ./gradlew build 입력 후 엔터
    - 만약, gradlew Permission Denied 가 발생하면, chmod +x gradlew(리눅스 파일 사용 권한 변경) 를 터미널에 입력 한 후, 다시 ./gradlew build 를 실행
    https://javalism.tistory.com/101
    https://recipes4dev.tistory.com/175
  1. 실행 in terminal
  1. 프로파일(Profile) 적용
  • 어플리케이션의 실행 환경에 따라 DB 등의 설정을 다르게 적용할 수 있음
  • 기존의 application.yml 파일 외에 application-local.yml & application-server.yml 파일 생성
    - -(대시)를 기준으로 프로파일명을 yml 파일 이름안에 포함
    - application.yml : 실행 환경에 상관없이 공통적으로 적용할 수 있는 프로퍼티를 설정
    - application-local.yml : 로컬 환경에서 사용하는 property 설정 (h2 인메모리 사용)
    - application-server.yml : 서버 환경에서 필요한 property 설정 (db 사용)
  • IntelliJ IDE에서 프로파일 적용
    : 애플리케이션 실행 파일이 위치한 셀렉트 박스를 클릭 > Edit Configurations 클릭 > Program arguments 필드에 --spring.profiles.active=프로파일명 을 입력해서 활성화 할 프로파일을 지정(Ex. 여기서 프로파일명은 local or server)

  • 빌드된 실행 파일에 프로파일 적용 in terminal
    : java -jar .jar 파일명 --spring.profiles.active=프로파일명 으로 profile 설정 적용해서 실행

  1. 배포 (추후 학습 예정)

  2. 실습 : 애플리케이션 빌드 시, 프로파일 기능을 이용해서 서버 환경의 DB 접속 정보를 포함시키는 작업

  • 프로파일 적용 후, 빌드 및 실행하면 됨.
  • 그런데, 포스트맨으로 요청/응답은 잘 되는데, 실제 mysql에는 db가 생성이 안 되었다. 그럼 대체 정보는 어디에 저장된 것..?
  • 나는 인텔리제이 얼티밋이 아니라 무료 버전(커뮤니티)을 쓰고 있는데, 여기에는 database 탭이 따로 없어서, database navigator 플러그인을 따로 설치해서 db 연결을 확인해봤더니, 또 연결은 잘 되었다고 나오는데 db는 안 보임 ㅋㅋ큐ㅠㅠ
    이것때문에 진짜 삽질을 몇 시간을 한 건지... (나같은 사람 많은 듯)
  • mysql에서 db를 먼저 만들고 실행하면 되는 것 같기는 하다.
    아니 근데 자동 생성으로 설정 해놨는데 왜 안 되냐고~! 무료 버전이라고 이러기냐?
    진짜 열심히 공들였으나, 계속 복불복으로 실행됨 ㅋㅋㅋ 뭔가 후련하지 않다.
    찾아보니까, 무료 버전에서는 지원하지 않는 드라이버도 있는 듯하다. 눈물나네..
  • ↓mysql 연동 방법
    https://victorydntmd.tistory.com/321
  • ↓db 연결 오류 문제
    https://github.com/jojoldu/freelec-springboot2-webservice/issues/757
  • 오늘 실습 때 작성한 yml 파일
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/coffee_order?serverTimezone=UTC&characterEncoding=UTF-8
    username: root
    password:
  jpa:
    hibernate:
      ddl-auto: create-drop  # (1) 스키마 자동 생성
    show-sql: true      # (2) SQL 쿼리 출력
    properties:
      hibernate:
        format_sql: true  # (3) SQL pretty print
logging:
  level:
    org:
      springframework:
        orm:
          jpa: DEBUG
  1. 기타
  • 터미널에서 mysql 실행 방법 : mysql -u root -p
  • mysql workbench 깔아서 사용하니까, gui 방식이라 편하다.
  • mockMvc는 디스패처 서블릿 앞에서 톰캣같은 서블릿 컨테이너를 사용하지 않음.
  • ↓기본 task
    https://wani-coding.tistory.com/131
  • build 꼬였을 땐, 초기화하는 방법도 있음. 다음에 뭔가 뻑나면 시도해봐야지.
    https://countryxide.tistory.com/155

<느낀 점>
ㄹㅇ 삽질 오졌던 하루... 마지막까지도 찜찜하게 끝났지만...★
페어인 토란님께서 함께 삽질해주신 덕에 끝까지 삽질할 수 있었다.

방법은 다 맞는데 프로그램 내부 문제로 오류가 나니 속 터질 뻔..
멍청한 컴퓨터!

실제 프로젝트에서는 mysql 말고 다른 db를 사용하는 것도 고려해봐야겠다.
아니면 학생 계정 있으면 얼티밋 사용 가능하다던데, 그쪽으로 알아봐야 할지도.

내일 섹션3 끝이다. 1달 뒤에 프로젝트라니.. holy ..
제발 프로젝트까지 마무리 잘 짓고, 취업 원하는 방향으로 잘 했으면 좋겠다.
화이팅!

0개의 댓글