[Spring] Spring boot 프로젝트 생성 및 설정

·2024년 3월 20일

Spring

목록 보기
1/3

🌿 Spring Tool Suite 4 (STS4)

🌿 Spring Starter Project 생성

Name : 프로젝트 이름
Type : 라이브러리 관리 툴 (애플리케이션 빌드 방식)
Packaging : 패키징 타입 (Jar - 내장 톰캣을 이용하여 독립적으로 애플리케이션 구동 / War - 별도 외부 톰캣을 이용하여 애플리케이션 구동)
Java Version : 자바 jdk 버전
Language : 프로그래밍 언어
Group : 그룹 아이디
Artifact : 아티팩트 아이디(보통 프로젝트 이름과 동일)
Version : 자주 바뀌는 경우 설정
Description : 프로젝트 설명
Package : 최상위 패키지 (루트 경로)

🌿 Dependencies 설정

Developer Tools

	Spring Boot Devtools(코드 변경 시 서버 자동 재시작)
	Lombok(편리한 DTO 구성)

Messaging

	WebSocket(채팅을 위한 웹소켓)

SQL

	JDBC API
	MyBatis Framework
	Oracle Driver

Template Engines

	Thymeleaf(서버사이드 렌더링)

Web

	Spring Web(RESTful, Spring MVC, 내장톰캣)

→ Spring Web은 스프링 기반의 웹 애플리케이션을 만들기 위해 필요한 라이브러리로 가장 익숙한 환경의 Spring을 사용할 수 있으며, Apache Tomcat이 기본적으로 추가된 환경을 제공
→ Dependency는 추후에도 추가 가능하므로 Spring Web과 Spring Boot Devtools를 포함하여 우선 초기에 필요한 것들 위주로 추가하면 된다!

🌿 생성된 프로젝트 확인

  • application.properties 파일 확인
    → 모든 spring의 설정(xml 파일에서의 설정 등)을 properties 파일에서 함
  • pom.xml 파일 확인
  • 기본적으로 JSP를 사용하지 않기 때문에 main 아래에 webapp 파일이 없음

🌿 Java 버전 변경

Java Build Path, Project Facets의 Java version을 변경
(프로젝트 생성 시 JDK17 버전으로 기본 선택 → 실제 설치 버전인 11로 변경)

Project 우클릭 - Build Path - Configure Build Path


🌿 application.yml

New > File 에서 application.yml 파일 생성 후 작성

spring:
  profiles:
    active: local #local,dev,real → 운영환경 지정
    
  #JSP 호출 시 view 설정
  mvc:
    view: #view 경로 및 확장자 지정
      prefix: /WEB-INF/views/
      suffix: .jsp
    
  datasource: #DB접속 설정
    driver-class-name: oracle.jdbc.OracleDriver
    url: jdbc:oracle:thin:@localhost:1521:xe
    username: [DB 아이디]
    password: [DB 비밀번호]
    hikari:
      connection-timeout: 30000 #클라이언트가 pool에 connection을 요청하는데 기다리는 최대시간 설정(30)
      maximum-pool-size: 10 #최대 connection 개수 설정
      max-lifetime: 180000 #connection pool에서 살아있을 수 있는 커넥션의 최대 수행 시간 1,800(30)

  messages: #메시지 설정
    basename: messages.validation
    encoding: UTF-8
    
  #JSP/클래스 변경 시 바로 갱신되게끔    
  devtools: #View reload
    livereload:
      enabled: true
    restart: #controller, model단이 바뀌었을 때 프로젝트 재시작 설정(Classpath에 있는 모든 파일)
      enabled: true
 
mybatis: #mybatis 설정
  type-aliases-package: kr.spring.**.vo #하위 경로 -> **
  mapper-locations: kr/spring/**/dao/*.xml
  
logging: #Log 지정
  level:
    '[kr.spring]': debug #kr.spring 하위는 모두 debug 모드로 지정
    
#서버 포트 설정, 인코딩 처리    
server:
  port: 8000
  servlet:
    encoding:
      charset: UTF-8
      enabled: true #http 인코딩 지원 활성화 여부 (charset의 option)
      force: true #charset의 option

→ DB접속 설정 명시하지 않을 시 Failed to configure a DataSource 오류 발생

🌿 pom.xml 파일에 내용 추가

  • java version 변경
    <java.version>11</java.version>

  • ojdbc 버전 변경
    <artifactId>ojdbc8</artifactId>

  • spring boot 버전 변경

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.7.13</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
  • mybatis 버전 변경
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>2.3.1</version>
		</dependency>
        ...
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter-test</artifactId>
			<version>2.3.1</version>
			<scope>test</scope>
		</dependency>
	</dependencies>
  • Spring Boot는 Legacy Project와 달리 jstl과 jsp를 기본제공하지 않기 때문에 사용 시 라이브러리를 추가해야 함
	<dependencies>    
		<!-- Library -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.tomcat.embed</groupId>
			<artifactId>tomcat-embed-jasper</artifactId> <!-- jasper은 jsp -->
		</dependency>
	...
	</dependencies>

※ pom.xml에 에러 발생 시 프로젝트 우클릭 > Maven > Update Project (이후에도 오류 뜰 시 오타일 확률이 높음)

🌿 정상 구동되는지 확인

  • Boot Dashboard에서 프로젝트 우클릭 후 start

  • 서버 정상 동작

  • Open Web Browser

🌿 Hello World 출력

  • 메인 패키지 하위에 controller package 생성

  • controller package 하위에 class 생성

package com.example.demo.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
	
	@RequestMapping("/")
	public String index() {
		return "Hello World";
	}
}
  • server 재시작 후 정상 출력되는지 확인

0개의 댓글