Spring

    [Spring] Could not find org.springframework.boot:spring-boot-starter 애러 해결 방법

    애러 원인 스프링 부트를 사용한 앱의 모듈화를 진행하다가 다음과 같은 오류가 발생했다. * What went wrong: Execution failed for task ':test-module:compileKotlin'. > Could not resolve all files for configuration ':test-module:compileClasspath'. > Could not find org.springframework.boot:spring-boot-starter-data-mongodb:. 원인은 스프링 부트 스타터(spring-boot-starter) 라이브러리를 사용하려면 플러그인이 설정되어 있어야 하는데 설정되지 않아서였다. 문제 해결 방법 라이브러리 모듈에서의 해결 방법 문제를 해결하기 ..

    [Spring] java.lang.ClassNotFoundException: kotlinx.coroutines.CoroutineScope 애러 해결법

    애러 원인 해당 애러는 Spring에서 코루틴과 관련된 코드를 사용하고 있는데, 코루틴 라이브러리에 대한 의존성이 설정되지 않아 발생한다. 예를 들어 다음과 같이 컨트롤러를 만들면, 코틀린에는 기본적으로 일시 중단 함수가 내장되어 있기 때문에 컴파일러에서 오류가 발생하지 않지만, 스프링 프레임웍 내부적으로 CoroutineScope에서 코루틴을 실행해 해당 일시 중단 함수를 실행하기 때문에 오류가 발생한다. @Controller class CoroutineTestController() { @GetMapping("/coroutine/call") suspend fun callCoroutine(): ResponseEntity { // 일시 중단 함수 사용 return ResponseEntity.ok("Coro..

    스프링에 MongoDB 연결하고 데이터 입력하는 서비스 만들어보기

    스프링에 MongoDB 연결하기 스프링 MongoDB 의존성 추가하기 스프링 부트 프로젝트에 MongoDB를 연결하기 위해서는 build.gradle.kts 파일에 MongoDB 라이브러리에 대한 의존성을 추가해야 한다. 다음과 같이 의존성을 추가하자. dependencies { implementation("org.springframework.boot:spring-boot-starter-data-mongodb") ... } 이후 프로젝트를 다시 빌드해 라이브러리를 다운로드한다. application.properties에 MongoDB 정보 추가하기 application.properties 파일에는 실행 중인 MongoDB의 정보 세 가지를 추가해야 한다. spring.data.mongodb.host에는 ..

    [Spring] Accept-Language 헤더에 따라 다국어 지원하는 방법 한 번에 정리하기

    HttpServletRequest 사용해 Accept-Lanauge 헤더 처리하기 HttpServletRequest를 사용해 Aceept-Lanauge 헤더를 처리하고, Locale 객체(지역 정보를 나타내는 객체)로 변환하기 위해서는 ServletRequest의 함수로 선언된 getLocale 함수를 사용하면 된다. @GetMapping("/bloginfo/kotlinworld") fun getBlogInfo( request: HttpServletRequest ): ResponseEntity { val locale: Locale = request.locale // getLocale 실행 해 HttpServletRequest의 Accept-Lanauge 헤더 정보를 Locale 정보로 변환 ?: retu..

    [Spring] properties 파일의 Unsupported characters for the charset 'ISO-8859-1' 경고 메세지 해결 방법

    Unsupported characters for the charset 'ISO-8859-1' 경고 메세지의 발생 원인 이 메세지는 .properties 파일의 기본 인코딩이 ISO-8859-1 로 되어 있는데, 해당 인코딩으로 지원하지 않는 문자열을 쓸 때 발생한다. 이런 경우 경고를 무시하고 애플리케이션을 실행할 경우, 해당 문자를 읽으면 '????' 로 표기된다. 예를 들어 /bloginfo/kotlinworld 경로의 응답을 처리하는 함수를 만들어보자. 이 함수는 Accept-Language 값을 읽어 Locale 객체로 변환한다. @GetMapping("/bloginfo/kotlinworld") fun getBlogInfo( @RequestHeader("Accept-Language") locale..