http://localhost:8080/hello 라는 주소를 입력했을 때 HelloWorld가 출력되는 프로젝트를 만들 것이다!
이 프로젝트가 동작하기 위해서는 내 컴퓨터(localhost)가 웹 서버가 되어 8080 포트에서 실행되어야 하고, URL을 통해 서버에 요청이 발생하면 HelloWorld라는 문구를 화면에 출력한다.


먼저 HelloController 클래스를 생성해준다. 나는 동일한 이름의 클래스가 있어서 Finish 버튼이 비활성화 되어있지만 Finish를 누르면 클래스가 생성된다.
그러면 HelloController.java 파일이 아래 형태와 같이 생성이 된다.
package com.mysite.sbb;
public class HelloController {
}
하지만 이것은 빈껍데기이고 컨트롤러의 기능을 갖추려면 다음과 같이 수정해주어야 한다.
package com.mysite.sbb;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class HelloController {
@GetMapping("/hello")
@ResponseBody
public String hello() {
return "Hello World";
}
}
개인적으로 클래스 위에 적용된 @Controller가 신기하였는데 @...을 Annotation, 어노테이션 혹은 에너테이션이라 부른다고 한다.
에너테이션은 소스코드에 대한 정보를 소스코드의 주석에 저장한 것으로, 소스코드의 주석으로부터 HTML 문서를 생성해내는 프로그램인 javadoc.exe을 만들어 사용한다고 한다.
프로그램의 소스코드 안에 다른 프로그램을 위한 정보를 미리 약속된 형식으로 포함시킨다고 정리하면 된다!
@Controller 애너테이션은 HelloController 클래스가 컨트롤러의 기능을 수행한다는 의미이다. 이 애너테이션이 있어야 스프링부트 프레임워크가 컨트롤러로 인식한다. hello 메서드에 적용된 @GetMapping("/hello") 애너테이션은 http://localhost:8080/hello URL 요청이 발생하면 hello 메서드가 실행됨을 의미한다. 즉, /hello URL과 hello 메서드를 매핑하는 역할을 한다. 그리고 @ResponseBody 애너테이션은 hello 메서드의 응답 결과가 문자열 그 자체임을 나타낸다. hello 메서드는 "Hello World" 라는 문자열을 리턴하므로 출력으로 "Hello World" 문자열이 나갈 것이다.
로컬서버 실행하기
HelloController가 제대로 동작하는지 확인하기 위해서는 로컬서버를 실행시켜야 한다. 로컬서버는 아래 사진과 같은 순서로 실행한다.


아래 콘솔창에 다음과 같은 문구가 출력된다면 실행에 성공한 것이다.
서버가 실행되었으니 브라우저의 주소창에 http://localhost:8080/hello라고 입력한다.

그럼 위와 같이 문구가 출력될 것이다. 나는 HelloWorld라고 적지 않고 Hello SpringBootBoard라고 작성을 하여 문구가 다르다!
다음과 같이 출력을 해낸 뒤, 문구를 다른 것을 출력하고 싶어 수정을 하고 웹을 새로고침했더니 문구가 바뀌지 않았다. 그 이유는 프로그램이 변경되더라도 로컬서버가 변경된 클래스를 리로딩하지 않기 때문이다.
프로그램을 수정하고 변경된 사항을 확인하려면 매번 서버를 재시작해야 하는데, 이러한 불편함을 해결하기 위해 Spring Boot Devtools를 설치해야 한다. Spring Boot Devtools는 스프링부트 개발시 도움을 주는 도구이다. Spring Boot Devtools를 설치하면 서버 재시작 없이도 클래스 변경시 서버가 자동으로 재기동 된다.
Spring Boot Devtools를 사용하기 위해서는 그레이들(Gradle)로 설치해야 한다. 다음과 같이 build.gradle 파일을 수정하자.
[파일명: /sbb/build.gradle]
plugins {
id 'java'
id 'org.springframework.boot' version '3.0.0'
id 'io.spring.dependency-management' version '1.1.0'
}
group = 'com.mysite'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
}
tasks.named('test') {
useJUnitPlatform()
}

dependencies 항목에 developmentOnly 'org.springframework.boot:spring-boot-devtools'를 추가한다.
build.gradle 파일의 내용을 적용하려면 [Gradle -> Refresh Gradle Project]를 선택하여 필요한 라이브러리를 다운로드해야 한다.

설치가 완료되면 BootDashboard의 서버명이 sbb에서 sbb[devtool]로 바뀐다.
이러고 서버를 재시작해주면 이후부터는 변경사항이 생기면 서버를 재시작하지 않아도 문자열이 잘 바뀌어서 출력이 된다.
'백엔드' 카테고리의 다른 글
[네트워크] TCP vs UDP, HTTP (0) | 2023.07.28 |
---|---|
스프링부트 프로젝트의 구조 (0) | 2023.07.19 |
스프링부트란? (0) | 2023.07.11 |
http://localhost:8080/hello 라는 주소를 입력했을 때 HelloWorld가 출력되는 프로젝트를 만들 것이다!
이 프로젝트가 동작하기 위해서는 내 컴퓨터(localhost)가 웹 서버가 되어 8080 포트에서 실행되어야 하고, URL을 통해 서버에 요청이 발생하면 HelloWorld라는 문구를 화면에 출력한다.


먼저 HelloController 클래스를 생성해준다. 나는 동일한 이름의 클래스가 있어서 Finish 버튼이 비활성화 되어있지만 Finish를 누르면 클래스가 생성된다.
그러면 HelloController.java 파일이 아래 형태와 같이 생성이 된다.
package com.mysite.sbb;
public class HelloController {
}
하지만 이것은 빈껍데기이고 컨트롤러의 기능을 갖추려면 다음과 같이 수정해주어야 한다.
package com.mysite.sbb;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class HelloController {
@GetMapping("/hello")
@ResponseBody
public String hello() {
return "Hello World";
}
}
개인적으로 클래스 위에 적용된 @Controller가 신기하였는데 @...을 Annotation, 어노테이션 혹은 에너테이션이라 부른다고 한다.
에너테이션은 소스코드에 대한 정보를 소스코드의 주석에 저장한 것으로, 소스코드의 주석으로부터 HTML 문서를 생성해내는 프로그램인 javadoc.exe을 만들어 사용한다고 한다.
프로그램의 소스코드 안에 다른 프로그램을 위한 정보를 미리 약속된 형식으로 포함시킨다고 정리하면 된다!
@Controller 애너테이션은 HelloController 클래스가 컨트롤러의 기능을 수행한다는 의미이다. 이 애너테이션이 있어야 스프링부트 프레임워크가 컨트롤러로 인식한다. hello 메서드에 적용된 @GetMapping("/hello") 애너테이션은 http://localhost:8080/hello URL 요청이 발생하면 hello 메서드가 실행됨을 의미한다. 즉, /hello URL과 hello 메서드를 매핑하는 역할을 한다. 그리고 @ResponseBody 애너테이션은 hello 메서드의 응답 결과가 문자열 그 자체임을 나타낸다. hello 메서드는 "Hello World" 라는 문자열을 리턴하므로 출력으로 "Hello World" 문자열이 나갈 것이다.
로컬서버 실행하기
HelloController가 제대로 동작하는지 확인하기 위해서는 로컬서버를 실행시켜야 한다. 로컬서버는 아래 사진과 같은 순서로 실행한다.


아래 콘솔창에 다음과 같은 문구가 출력된다면 실행에 성공한 것이다.
서버가 실행되었으니 브라우저의 주소창에 http://localhost:8080/hello라고 입력한다.

그럼 위와 같이 문구가 출력될 것이다. 나는 HelloWorld라고 적지 않고 Hello SpringBootBoard라고 작성을 하여 문구가 다르다!
다음과 같이 출력을 해낸 뒤, 문구를 다른 것을 출력하고 싶어 수정을 하고 웹을 새로고침했더니 문구가 바뀌지 않았다. 그 이유는 프로그램이 변경되더라도 로컬서버가 변경된 클래스를 리로딩하지 않기 때문이다.
프로그램을 수정하고 변경된 사항을 확인하려면 매번 서버를 재시작해야 하는데, 이러한 불편함을 해결하기 위해 Spring Boot Devtools를 설치해야 한다. Spring Boot Devtools는 스프링부트 개발시 도움을 주는 도구이다. Spring Boot Devtools를 설치하면 서버 재시작 없이도 클래스 변경시 서버가 자동으로 재기동 된다.
Spring Boot Devtools를 사용하기 위해서는 그레이들(Gradle)로 설치해야 한다. 다음과 같이 build.gradle 파일을 수정하자.
[파일명: /sbb/build.gradle]
plugins {
id 'java'
id 'org.springframework.boot' version '3.0.0'
id 'io.spring.dependency-management' version '1.1.0'
}
group = 'com.mysite'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
}
tasks.named('test') {
useJUnitPlatform()
}

dependencies 항목에 developmentOnly 'org.springframework.boot:spring-boot-devtools'를 추가한다.
build.gradle 파일의 내용을 적용하려면 [Gradle -> Refresh Gradle Project]를 선택하여 필요한 라이브러리를 다운로드해야 한다.

설치가 완료되면 BootDashboard의 서버명이 sbb에서 sbb[devtool]로 바뀐다.
이러고 서버를 재시작해주면 이후부터는 변경사항이 생기면 서버를 재시작하지 않아도 문자열이 잘 바뀌어서 출력이 된다.
'백엔드' 카테고리의 다른 글
[네트워크] TCP vs UDP, HTTP (0) | 2023.07.28 |
---|---|
스프링부트 프로젝트의 구조 (0) | 2023.07.19 |
스프링부트란? (0) | 2023.07.11 |