@ConfigurationProperties 가 필요한 경우application.properties 파일에는 애플리케이션을 위한 여러 설정이 들어간다. 이때 여러 설정 값들을 application.properties에 정의해 놓는데, 이 값들을 앱으로 가져와야 하는 경우가 생긴다. 예를 들어 서버의 이름, 서버에서 허용하는 클라이언트의 유형 등을 개발 환경 별로 다르게 설정해놓고 이 값을 통해 애플리케이션을 설정하는 경우 등이 있을 수 있다. 예를 들어 다음과 같은 application.properties 파일이 있다고 해보자.spring.application.name=setting-configurationpropertiesserver.server-name=releaseserver.allowed-clie..
application.properties
개발 환경 별로 서로 다른 application.properties 파일이 필요한 이유application.properties는 스프링 부트 애플리케이션의 설정 파일 역할을 하며, 이곳에는 로그 레벨이나 DB 접속 정보 등 다양한 설정을 작성할 수 있다. 이 정보들은 개발 환경 별로 다르게 설정되어야 한다. 개발 환경은 대표적으로 다음 세가지가 있다.DevQaRelease(혹은 Prod)Dev 환경에서는 개발을 편하게 만들기 위한 환경이 설정돼야 하기 때문에 로그 레벨이 DEBUG나 TRACE 정도가 되어야 하고, 개발만을 위한 DB가 따로 설정돼야 한다. 또한 Release 환경은 사용자가 직접적으로 접하는 환경이기 때문에 로그 레벨이 ERROR 정도로 설정되어야 하고 DB가 별도로 설정돼야 한다. 즉..
로그 레벨이란?로그 레벨은 애플리케이션에서 발생하는 로그의 중요도를 나타내는 지표이다. 개발 환경 별로 로그 레벨을 관리하는 것은 매우 중요하다. 개발 시에만 필요한 로그를 넣어뒀는데, 이것이 프로덕션에서도 보여진다면 불필요한 로그가 보여지는 것이기 때문에 불필요한 데이터가 디스크를 차지하거나 할 수 있다. 따라서 개발 환경 별로 서로 다른 로그 레벨의 설정이 필요하다. 이것을 어떻게 설정하는지 알기 위해 먼저 Spring 에는 어떤 로그 레벨이 있는지 알아보자. Spring의 로그 레벨Spring 에서는 다음과 같은 6단계의 로그 레벨을 사용한다. TRACE: 가장 상세한 정보를 제공하는 레벨DEBUG: 개발 시 디버깅 목적으로 사용되는 레벨INFO: 일반적인 정보를 나타내는 레벨WARN: 잠재적인 문..
스프링 MongoDB 라이브러리와 쿼리 스프링에서 제공되는 MongoDB 라이브러리를 사용하면, 단순히 MongoRepository를 상속 받는 인터페이스를 만드는 것만으로도 필요한 쿼리를 모두 만들어준다. 예를 들어 다음과 같은 books 컬렉션을 만들고, Book Document를 이 컬렉션에 저장한다고 해보자. @Document(collection = "books") data class Book( @Id val id: String? = null, val bookName: String, val description: String ) 그러면 해당 역할을 하는 BookRepository는 다음과 같이 만들 수 있다. interface BookRepository : MongoRepository BookRe..
문제 원인 스프링 애플리케이션은 웹 서버를 내장하기 때문에, 하나의 포트에 하나의 스프링 애플리케이션만 실행할 수 있다. 조금 더 자세히 이야기 하면 하나의 포트에 둘 이상의 스프링 애플리케이션이 실행된다면, 사용자로부터 요청을 받았을 때 어떤 애플리케이션에서 요청을 처리해야 할지 알 수 없기 때문에, 하나의 포트에서는 하나의 스프링 애플리케이션만 실행돼야 한다. 이 때문에 이미 스프링 애플리케이션이 사용하고 있는 포트를 다른 스프링 애플리케이션이 사용하려고 하면 다음과 같은 오류가 뜬다. *보통 스프링 애플리케이션의 기본 포트는 8080번으로 설정되어 있기 때문에 여기서는 8080을 사용 중이라는 오류가 뜨는 상황을 보여준다. Web server failed to start. Port 8080 was ..