BackEnd/Spring Boot

Spring Boot 서버 구축[2]

Raconer 2023. 4. 15. 17:12
728x90

이번 내용은 생성된 프로젝트에 웹 프로젝트를 실행하기 위해 필요한 dependency를 추가하고, 필요한 코딩을 작성하는 과정을 다룬다.


0. 프로젝트 구조

이전 시간에 구현한 프로젝트이며, 아래 이미지처럼 구성되어 있다.

여기서 각 파일이 어떤 역할을 하며 어떤 내용을 입력하는지 알아두는 것이 좋다.

  1. DemoApplication.java
    추후 이름을 바꿀 예정이지만, 서버 실행 시 가장 먼저 실행되는 클래스이다.
  2. application.properties
    웹에 필요한 환경 설정 정보를 입력하는 파일이다. key=value 형식으로 작성하며, 포트 번호, 접두어(prefix), DB 설정 등 다양한 서버 정보를 포함할 수 있다.
  3. build.gradle
    필요한 라이브러리 의존성(dependency)을 입력하는 곳이다. 꼭 dependency만 입력하지 않아도 되고, gradle 관련 설정도 가능하다.
  4. .gitignore
    Git(버전 관리 프로그램)을 사용할 경우, 여기에 등록된 확장자는 Git에 포함되지 않고 제외된다.
  5. java.com.spring.basic.first
    Java 관련 코드 (Controller, Configuration, VO 등)를 작성하는 패키지이다.
  6. test.java.com.spring.basic.first
    테스트 코드를 작성하는 공간으로, 이후 테스트 관련 내용을 다룰 예정이다.
  7. 보통 java, resources, webapp 디렉터리는 같은 레벨에 구성되며, webapp은 View를 작성하는 디렉터리이다.

1. 기본 Dependency 설정

웹 서버를 실행하기 위한 Dependency를 build.gradle에 추가한다.

compile("org.springframework.boot:spring-boot-starter-web:2.3.1.RELEASE")

위의 dependency를 추가하면 Spring의 내장 Tomcat 서버 및 @SpringBootApplication 어노테이션이 활성화된다.

@SpringBootApplication은 다음 세 가지를 묶은 것이다:

  • @Configuration
  • @EnableAutoConfiguration
  • @ComponentScan

2. 서버 포트 설정

application.properties에 포트 번호를 입력한다.

server.port=8080

입력 시 서버는 포트 번호 8080을 기준으로 실행된다.


3. 서버 실행 테스트

VS Code의 터미널을 열어 다음 명령어를 실행한다:

./gradlew bootRun

만약 gradlew 명령어를 인식하지 못하면 Gradle이 설치되어 있어야 한다.

정상적으로 실행되면 서버가 구동되고, 브라우저에서 localhost:8080으로 접속할 수 있다.

하지만 다음과 같이 에러 페이지가 표시될 수 있다:

에러가 뜨는 이유는 localhost:8080 경로에 매핑된 동작(Controller)이 없기 때문이다.

즉, 아무것도 없는 주소에 접근하니 아무것도 없는 빈 화면이 나온 것이다.

이 경우에도 서버 자체는 정상적으로 동작하고 있으므로 안심해도 된다.


4. 기본 주소 Controller 생성

다음과 같이 com.spring.basic.first.controller.MainController.java 클래스를 생성한다.

(JSP 파일도 함께 생성해두면 좋다: webapp/WEB-INF/main.jsp)

@Controller
public class MainController {

    @RequestMapping("/")
    public String home() {
        return "main"; // WEB-INF/main.jsp 를 의미
    }
}

그리고 JSP 파일도 작성한다:

webapp/WEB-INF/main.jsp

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Main</title>
</head>
<body>
    <h1>Spring Boot JSP View</h1>
</body>
</html>

5. JSP View 인식을 위한 Dependency 추가

전부 다 작성을 했으니 이제 다시 실행을 시키면 처음과 같이 분명 에러 페이지가 뜰 것이다.

그 이유는 다음과 같다:

  • 현재 Spring Boot 서버는 실행되었고,
  • application.properties 및 컨트롤러, JSP 파일 등도 모두 작성된 상태지만,
  • JSP View 접근에 관한 설정이 누락되어 있어 JSP 파일을 찾지 못한다.

따라서 아래 dependency를 추가해줘야 한다:

compile("org.apache.tomcat.embed:tomcat-embed-jasper:9.0.36")

이 dependency는 View 단에서 JSP 파일(main.jsp 등)을 인식하고 렌더링할 수 있도록 도와준다.

다시 서버를 실행한 후 localhost:8080에 접속하면 JSP가 정상 출력되는 것을 확인할 수 있다.


마무리

오늘은 서버를 실행시키고 JSP View를 출력하는 법까지 구성해보았다.

다음 시간에는 DB에 연결하는 방법을 알아볼 예정이다.


✍️ 개인적인 생각

개발을 하면서 다른 사람들의 프로젝트 구현 방식이나 구조를 많이 보아왔다.

하지만 정작 dependency가 무슨 역할을 하는지, 왜 실행이 되는지 제대로 이해하지 못한 채 넘어가는 경우가 많았다.

개발을 할 때 "실행이 되는 것"도 중요하지만,

시간이 있거나 여유가 있다면 왜 실행이 되는지를 이해하고 넘어가는 것이 더 중요하다고 생각한다.

728x90

'BackEnd > Spring Boot' 카테고리의 다른 글

HikariCP란?  (0) 2023.04.15
JDBC란?  (0) 2023.04.15
Spring Boot 서버 구축[1]  (0) 2023.04.15
Spring Boot란?  (0) 2023.04.15
Override VS Overload  (0) 2023.04.15