본문 바로가기

Spring boot/Bank App 만들기(deployment)

Bank App 만들기 ( deployment ) - yml 파일 설정하기

파일 확장자명 application.properties -> application.yml 로 수정하기

참고

application.properties 파일은 Spring Boot 애플리케이션의 설정을 관리하는 핵심 요소 중 하나로, 스프링 레거시 프로젝트에서 사용되는 XML 기반의 설정 파일들과 비교할 때 몇 가지 중요한 차이점과 역할을 가지고 있다.

💡 Spring Boot의 application.properties 의 역할

설정의 단순화: Spring Boot는 "convention over configuration" 원칙을 따른다. 이는 개발자가 애플리케이션을 구성하기 위해 필요한 설정을 최소화하려는 목적을 가지고 있다. application.properties 파일을 통해 데이터베이스 연결, 서버 포트, 로깅 레벨 등과 같은 애플리케이션 설정을 간단하고 명료하게 정의할 수 있다.

자동 구성 지원: Spring Boot는 자동 구성(auto-configuration)을 지원한다. application.properties 파일에서 특정 속성을 설정하면 Spring Boot가 이를 감지하고 관련된 빈(bean)이나 구성 요소를 자동으로 설정한다. 예를 들어, 데이터베이스 연결 정보를 제공하면 Spring Boot는 DataSource를 자동으로 구성한다.

프로파일 기반 설정: application.properties 파일을 사용하여 다양한 환경(예: 개발, 테스트, 운영)에 대한 설정을 관리할 수 있다. application-{profile}.properties 형식의 파일을 통해 환경별로 다른 설정을 적용할 수 있으며, 애플리케이션 실행 시 활성화할 프로파일을 지정할 수 있다.

 

 

 

그럼 yml 파일에 대해 알아 보자.

우리가 타 시스템 간에 데이터를 주고 받을 때 데이터 포맷에 대한 약속이 필요하다.

태그형식을 통해서 Key와 Value를 구분하고, 태그안에 태그를 넣어서 부모와 자식관계의 구조를 나타낸다. 근데 위에 Object와 Array 부분은 표시를 해놨지만 Xml포맷상으로는 구분이 안되는 부분도 있다.

 

 

 

xml 보다 좀 더 간편한 Json

💡 JSON(JavaScript Object Notation)은 경량의 데이터 교환 형식이다. 사람이 읽고 쓰기 쉬우며, 기계가 분석하고 생성하기 편리하도록 설계되었다. JSON은 두 가지 구조를 기반으로 한다.

 

이름/값 쌍의 집합 : 여기서 이름(키)은 항상 문자열이며, 값은 문자열, 숫자, 배열, 불리언(true/false), null 또는 다른 객체가 될 수 있다. 이 구조는 다양한 언어에서 객체(object)로 실현된다.

 

값의 순서 있는 리스트 : 일반적으로 배열(array) 또는 리스트(list)라고 불린다.

 

JSON은 텍스트 형식이며, 언어 독립적인 데이터 형식이다. 그러나 JSON 형식은 JavaScript 언어에서 객체를 만드는 방법과 매우 유사하여, JavaScript가 JSON의 구문에 영감을 주었다. 이 특성 때문에 JSON은 웹 어플리케이션 개발에서 JavaScript와 함께 자연스럽게 사용되며, 웹 서버와 클라이언트 간 데이터를 교환하는 데 효율적인 방법으로 널리 채택되었다.

 

 

 

Object 일 경우 {} 로 감싸주고있고, Array일 경우 [] 사용한다.

 

 

Json 보다 좀 더 간편한 Yaml

key 와 value 사이에 한 칸이 띄워져 있어야 한다. (엄격한 규칙)

yml 파일은 json 형식과 다르게 중괄호{} 없이 스페이스 2칸 이다.

즉 들여쓰기 규칙은 스페이스 2칸 이다. 규칙을 지키지 않으면 동작하지 않는다.

 

 

 

비교 해보기 (동일한 내용이다.)

 

 

 

 

application.yml 파일
server:
  port: 8080 #서버가 사용할 포트 번호 설정
  servlet:
    encoding:
      charset: utf-8	#서블릿의 응답과 요청 인코딩을 UTF-8 로 설정
      force: true	#요청과 응답에 대해 이 인코딩을 강제로 사용하도록 설정
      
spring:
  mvc:
    view: 
      prefix: /WEB-INF/view	#JSP 파일이 위치한 디렉토리 접두사를 설정
      suffix: .jsp	#뷰 이름에 자동으로 추가될 파일 확장자를 설정
  datasource:
    url: jdbc:h2:mem:bankdb;MODE=MySQL	#데이터 베이스 연결을 위한 URL을 설정
    driver-class-name: org.h2.Driver	#드라이버 클래스를 설정
    username: sa	#사용자 ID를 지정
    password: '' #DB 비밀번호 여기서는 빈 문자열로 설정
    
  h2:
    console:
      enabled: true #h2 데이터 베이스 콘솔을 활성화
      
  output:
    ansi:
      enabled: always #콘솔 출력에 ANSI 색상 코드를 사용할 수 있도록 설정
      
#mybatis 설정
mybatis:
  mapper-locations:
  - classpath:mapper/**/*.xml	#Mybatis 매퍼 파일 위치를 설정 **은 모든 디렉토리를 의미, *.xml은 모든 xml 파일을 의미
  configuration:
    map-underscore-to-camel-case: true #데이터베이스의 언더스코어 네이밍(column_name)을 카멜 케이스(columnName)로 자동 매핑
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #SQL 로깅 구현제를 설정
    
logging:
 level:
   org.apache.ibatis: DEBUG #MyBatis 로깅 레벨을 DEBUG로 설정하여 실행되는 SQL 쿼리와 내부 로깅 정보를 콘솔에 출력
728x90