문제 원인 스프링 애플리케이션은 웹 서버를 내장하기 때문에, 하나의 포트에 하나의 스프링 애플리케이션만 실행할 수 있다. 조금 더 자세히 이야기 하면 하나의 포트에 둘 이상의 스프링 애플리케이션이 실행된다면, 사용자로부터 요청을 받았을 때 어떤 애플리케이션에서 요청을 처리해야 할지 알 수 없기 때문에, 하나의 포트에서는 하나의 스프링 애플리케이션만 실행돼야 한다. 이 때문에 이미 스프링 애플리케이션이 사용하고 있는 포트를 다른 스프링 애플리케이션이 사용하려고 하면 다음과 같은 오류가 뜬다. *보통 스프링 애플리케이션의 기본 포트는 8080번으로 설정되어 있기 때문에 여기서는 8080을 사용 중이라는 오류가 뜨는 상황을 보여준다. Web server failed to start. Port 8080 was ..
스프링
@Controller의 문제 Controller에서 유저로부터 요청을 받았을 때 String 값을 반환하면, 스프링 프레임웍은 해당 String에 매핑되는 리소스를 찾아 반환한다. 때문에 우리가 특정한 객체를 반환하게 될 경우 해당 객체를 특정 리소스에 매핑시키지 않으면, 리소스를 찾을 수 없기 때문에 404 Not Found 애러가 뜬다. 예를 들어 다음과 같은 코드를 살펴보자. @Controller class HomePageController { @GetMapping("/blog/info") fun getBlogInfo(): BlogInfo { return BlogInfo("조세영의 Kotlin World", 3) } } data class BlogInfo(val name: String, val ye..
Controller와 정적 리소스 Controller는 요청을 받았을 때 String 값이 반환된다면, 기본적으로 정적 리소스 폴더 resources/static 에서 해당 String 값을 가진 정적 리소스 파일을 찾아 반환한다. 예를 들어 Controller 내부에서 "testpage.html" 값을 String 값으로 반환하면, resources/static/testpage.html 파일을 Response로 반환한다. @Controller class HomePageController { @GetMapping("/testpage") fun getHomePage(): String { return "testpage.html" } } 다만, 이 기능은 html에 한정된 것이 아니다. 이미지, 동영상, 음성..
MVC란? Spring MVC란 가장 많이 사용되고 있는 웹 아키텍처로, 스프링에서 웹 모듈 형태로 제공된다. 웹 개발 시 Model, View, Controller 단의 관심사를 분리함으로써 각각 독립적으로 개발될 수 있게 하여 각 구성요소 간의 의존성을 낮춘 것이 특징이며, 사용자 요청이라는 단일 진입점을 가진 웹 환경에서 사용되고 있는 아키텍처이다. * 관심사 분리: 관심사 분리는 컴퓨터 프로그램의 디자인 원칙으로, 분리시킬수 있는 부분을 분리시키는 원칙이다. * 관심사 분리가 중요한 이유는 관심사 분리가 되지 않을 경우 프로그램 내부의 코드간 의존성이 너무 커져서 하나를 고치거나 기능을 추가할 때 의존성이 있는 부분을 모두 고쳐야 하는 상황이 생기기 때문이다. MVC 개요 MVC 아키텍처를 채택한..
Intellij 무료 버전 1. https://start.spring.io/ 에 접속해서 과 같이 세팅한다. Project의 빌드 시스템을 Gradle로 바꾼다 : Gradle Project Project에서 사용할 Language를 Kotlin으로 바꾼다 : Kotlin Spring Boot의 Version을 Stable한 버전으로 세팅한다 : 2.5.4 ADD DEPENDENCIES를 눌러 Spring Web, Thymleaf(타임리프), Spring Boot DevTools를 추가한다. 2. 위 에서 Generate 버튼을 누르면 아래와 같이 demo.zip 파일이 생성된다. 해당 파일의 압축을 푼다, 3. 다음의 과정을 통해 생성한 프로젝트를 연다 Intellij를 켠 후 File-Open을 누른..