본문 바로가기

728x90

Spring Boot

(45)
외부 파일(.properties, .yaml)로 설정하기 Spring Boot의 외부설정 하나의 애플리케이션을 다른 여러 환경에서 사용해야 할 때가 있습니다. (개발 환경, 운영 환경 등) 각각의 환경에 따라 서로 다른 설정값이 존재하는데, 설정값에 따른 애플리케이션을 따로 만 silver-programmer.tistory.com 위 포스팅에서 OS 환경 변수, 자바 시스템 속성, 커맨드 라인 옵션 인수를 사용해 설정을 불러오는 방법을 알아보았습니다. 하지만 사용해야 하는 값이 늘어날수록 사용하기가 불편해지는 단점이 있습니다. 따라서 이번 포스팅은 설정값을 파일에 넣어서 관리하는 방식, 즉,. properties라는 파일을 사용해 설정값을 관리하고 사용하는 방식에 대해 작성하였습니다. .properties 외부 파일 key=value 형식을 사용해 설정값을 관..
@Value와 @ConfigurationProperties Spring에서는 외부 설정을 읽기 위한 방법으로 아래와 같이 다양한 방법을 제공합니다. Environment @Value - 값 주입 @ConfigurationProperties - 타입 안전한 설정 속성 이번 포스팅은 각 방법을 어떻게 사용하는지에 대해서 작성해 보았습니다. application.properties my.data.url=local.db.com my.data.username=local_user my.data.password=local_pw my.data.etc.max-connection=1 my.data.etc.timeout=3500ms my.data.etc.options=CACHE,ADMIN 위의 properties는 dash(-)를 사용하는 캐밥 표기법을 주로 사용합니다. (max-..
Spring Boot의 외부설정 하나의 애플리케이션을 다른 여러 환경에서 사용해야 할 때가 있습니다. (개발 환경, 운영 환경 등) 각각의 환경에 따라 서로 다른 설정값이 존재하는데, 설정값에 따른 애플리케이션을 따로 만들어 빌드를 여러 번 하여 배포해도 되지만, 이렇게 할 경우 유연성이 떨어지고, 다른 환경이 추가되면 또 거기에 맞도록 코드를 수정한 뒤 빌드를 해야 하는 번거로움이 존재합니다. 그래서 보통 아래와 같이 빌드는 한 번만 하고, 각 환경에 맞추어 실행 시점에 외부 설정값을 주입합니다. 이렇게 변하는 것 (외부 설정값)과 변하지 않는 것 (코드와 빌드 결과물)을 분리하여 유지보수하기 좋은 애플리케이션을 개발할 수 있고, 빌드 과정을 줄이며 환경에 따른 유연성을 확보할 수 있습니다. 이번 포스팅은 이렇게 애플리케이션을 실행할..
Jar 파일의 빌드와 배포 이번 포스팅에는 Spring Boot 없이 Jar 파일을 빌드 및 배포해 본 뒤, Spring Boot를 이용하여 편리하게 Jar 파일을 빌드 및 배포해 보면서 Spring Boot가 제공하는 편리성을 알아보도록 하겠습니다. 본 포스팅에서 사용한 코드의 패키지 구조는 아래와 같습니다. 각 클래스의 코드는 이 포스팅을 참고하시거나, 전체 소스 코드를 참고하시면 됩니다. 자바 Jar 파일 배포하기 자바의 main() 메서드를 실행하기 위해서는 jar 형식으로 빌드해야 합니다. 그리고 jar 안에는 META-INF/MANIFEST.MF 파일에 실행할 main() 메서드의 클래스를 아래와 같이 지정해야 합니다. Gradle의 도움을 받으면 이 과정을 쉽게 진행할 수 있습니다. //일반 Jar 생성 task bu..
나만의 Spring Boot로 Spring Boot 원리 파악하기 이번 포스팅에서는 내장 톰캣 실행, 스프링 컨테이너 생성, 디스패처 서블릿 등록의 모든 과정을 편리하게 처리해 주는 Boot 클래스를 만들어보면서 어떻게 Spring Boot가 동작하는지 알아보겠습니다. 이 포스팅을 보기 전에 아래 포스팅을 먼저 참고하면 이해에 도움이 되실 겁니다!! Spring Boot와 내장 톰캣 내장 톰캣은 WAR 방식의 단점을 보완하기 위해서 등장하였습니다. (참고: 외장 서버와 내장 서버) 내장 톰캣은 쉽게 말해 톰캣을 라이브러리로 포함하고 자바 코드로 직접 실행하는 것을 의미합 silver-programmer.tistory.com 본 포스팅에서 사용할 코드의 프로젝트 구조는 아래와 같습니다. 또한 build.gradle 파일에는 아래와 같은 dependency들이 추가되어야 ..
Spring Boot와 내장 톰캣 내장 톰캣은 WAR 방식의 단점을 보완하기 위해서 등장하였습니다. (참고: 외장 서버와 내장 서버) 내장 톰캣은 쉽게 말해 톰캣을 라이브러리로 포함하고 자바 코드로 직접 실행하는 것을 의미합니다. 이번 포스팅에서는 내장 톰캣을 이용하여 Spring과 연결하여 웹 애플리케이션을 만들어보는 과정을 작성하였습니다. 사용할 코드의 패키지 구조와 build.gradle 구조는 아래와 같습니다. plugins { id 'java' } group = 'hello' version = '0.0.1-SNAPSHOT' sourceCompatibility = '17' repositories { mavenCentral() } dependencies { //스프링 MVC 추가 implementation 'org.springfra..
외장 서버 vs 내장 서버 외장 서버 과거에는 자바로 웹 애플리케이션을 개발할 때, 먼저 서버에 톰캣과 같은 WAS(Web Application Server)를 설치한 뒤, 설치한 WAS에서 동작하도록 Servlet 스펙에 맞추어 코드를 작성하였습니다. 그리고 작성한 코드를 WAR 형식으로 빌드하여 war 파일을 생성하고, 생성한 war 파일을 설치한 WAS에 배포하는 방식으로 애플리케이션을 개발하였습니다. 하지만 이렇게 개발을 하는 것은 상당히 복잡하고 추가 설정이 필요합니다. 따라서 현재는 다른 방식으로 개발을 진행하는 데요, 그 방식인 내장 서버를 이용한 방식입니다. 내장 서버 최근에는 Spring Boot가 내장 톰캣을 포함하고 있습니다. 애플리케이션 코드 안에 톰캣 같은 WAS가 라이브러리로 내장되어 있어, 개발자가 코드..
@PostConstruct, @PreDestroy로 빈 생명주기 관리하기 데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요합니다. 이번 포스팅은, 스프링을 통해 이러한 초기화 작업과 종료 작업을 @PostConstruct와 @PreDestroy를 통해서 구현하는 방법에 대해 작성하였습니다. 스프링 빈은 간단하게 아래와 같은 라이프 사이클을 가집니다. 객체 생성 → 의존관계 주입 즉, 스프링 빈은 객체를 생성하고, 의존관계 주입이 다 끝난 다음에야 필요한 데이터를 사용할 수 있는 준비가 완료됩니다. 따라서, 초기화 작업은 의존관계 주입이 모두 완료되고 난 후 호출해야 합니다. 개발자가 의존관계 주입이 완료된 시점을 알아야 이렇게 ..

728x90
반응형