Tag Archives: Spring Boot

properties to yml 변환

Spring Boot로 초간단 프로젝트를 진행할 일이 있어서 spring initializr에서 Gradle + Java 21 + Spring Boot 4.0.0으로 기본셋 구성 후 파일을 받았는데, application.properties 파일이 기본으로 생성되어 있는게 아닌가?

개인적으로 yml(yaml) 파일이 반복적인 타이핑 없어서 선호하는 관계로 application.properties 파일을 application.yml파일로 변환하려고 찾아보니, spring boot는 *.properties / *.yml 모두 지원하니 그냥 형식에 맞게 변환 ㄱㄱ 하면서 간략히 요약 정리.

YAML to Properties Converter Online for MAGEDDO

https://mageddo.com/tools/yaml-converter

1. Properties와 YML 파일의 차이점

  • Properties: 키-값 쌍으로 구성된 단순 텍스트 파일 (예: key=value).
  • YML: 계층적 구조를 지원하는 가독성 높은 데이터 직렬화 형식 (YAML Ain’t Markup Language).
  • 변환 이유: YML은 계층 구조 표현이 용이하고, 스프링 부트 등에서 기본 지원.

2. 변환 방법

(1) 수동 변환

  • Properties 파일 확인: 예를 들어, application.properties:
server.port=8080
spring.application.name=testApp
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username={id}
spring.datasource.password={pwd}
  • YML 구조로 변환: 계층 구조를 반영해 application.yml 작성:

server: port: 8080 spring: application: name: testApp datasource: url: jdbc:mysql://localhost:3306/test username: {id} password: {pwd}
  • 주의사항:
    • Properties의 점(.)은 YML에서 계층을 나타내는 들여쓰기로 변환.
    • YML은 공백에 민감하므로, 2칸 들여쓰기를 준수.
    • 리스트는 하이픈(-)으로 표현 (예: list: – item1 – item2).

(2) 자동 변환 도구

3. 변환 시 주의사항

  • 키 이름 충돌: Properties는 중복 키를 허용하나, YML은 허용하지 않음.
  • 특수 문자: Properties에서 사용된 특수 문자는 YML에서 이스케이프 처리.
  • 스프링 부트 호환성: YML 파일은 application.yml로 저장해 스프링 부트에서 자동 인식.
  • 검증: 변환 후 YML 파일을 yamllint로 유효성 검사.

How set up Spring Boot to run HTTP/HTTPS ports

Spring Boot. 잘 모름.
새로 투입되는 프로젝트에서 Spring Boot로 프로젝트 구성하여 사용중인데, http로 작업하다가 일부 화면이 https적용이 필요하여 로컬 개발환경에서 spring boot기반으로 http/https를 동시에 띄워야 하는 상황이 발생.

일단 안써본 것이라서 잘 모름…ㅎㅎ
Spring Boot로 셋팅된 프로젝트 자체가 처음인지라…
일단 yaml…..야물은 또 뭐래?  라면서 검색.
여기서는 굳이 yaml이 뭔지 논외라서 패스.

application.yaml에 아래와 같이 설정되어 있었는데, 아래와 같이 수정.

server:
  port: 80
server:
  port: 443
  ssl:
      enabled: true
      key-alias: server
      key-store: "/~pathname~/keyStoreFile.jks"
      key-store-password: "keyStorePassword"
  http:
    port: 80

https 설정을 위한 사설인증서 생성은 아래 link 참조.
Java Keytool CSR Creation

detail하게 위의 링크를 모두 읽어 볼 필요는 없고, 과거 open-ssl로 작업했던거보다 간단.
위 링크의 상단 ssl인증서 생성용 기본정보 입력 후 Generate 버튼을 누르면 우측에 명령어가 생성됨.
그걸 복사해서…. 본인 개발환경의 jdk설치경로/bin/ 디렉토리 하위에서 해당 명령어를 실행하면 됨.
path에 jdk경로를 잡아둔 상태라면 그냥 keytool 이라고 입력해서 아무데서나 실행해도 될듯….
실행 후 비밀번호 입력하라고 나오면….여러번 같은 비밀번호로 입력 했으때, 최종적으로 *.csr / *.jks 파일이 생성되고, jks파일을 위의 설정에서 key-store에  경로로 입력하고, 지정한 비밀번호는 key-store-password에 입력.

https 443포트를 기본으로 띄우고, http 80은 server.http.port형태로 정의.

서버 구동시 https 443포트를 기본으로 구동하며  http는 spring boot가 어노테이션 기반의 Configuration을 읽어서 80 port로 구동하도록 아래와 같은 class를 추가. (당연히 spring component-scan이 이루어지는 package에 만들어야….)

package com.freesens.projectname;

import org.apache.catalina.connector.Connector;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer;
import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer;
import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class TomcatConfig {

    @Value("${server.http.port}")
    private int httpPort;
    @Bean
    public EmbeddedServletContainerCustomizer containerCustomizer() {
        return new EmbeddedServletContainerCustomizer() {
            @Override
            public void customize(ConfigurableEmbeddedServletContainer container) {
                if (container instanceof TomcatEmbeddedServletContainerFactory) {
                    TomcatEmbeddedServletContainerFactory containerFactory =
                            (TomcatEmbeddedServletContainerFactory) container;

                    Connector connector = new Connector(TomcatEmbeddedServletContainerFactory.DEFAULT_PROTOCOL);
                    connector.setPort(httpPort);
                    containerFactory.addAdditionalTomcatConnectors(connector);
                }
            }
        };
    }
}

설정 끝났으면 서버 구동하고, http/https로 각각 호출하여 정상 작동여부 확인하면 끝.

http://www.hostname.com/path.do
https://www.hostname.com/path.do

 

참고 링크.
– enabling-ssl-with-spring-boot-going-real
– how-set-up-spring-boot-to-run-https-http-ports

 

역시 검색을 잘해야 …….