STS 설정 + Spring Boot 환경 1탄

Yoon·2022년 10월 18일
0

Spring Boot

목록 보기
3/5

IDE(개발 툴 - STS) 설치하기

https://spring.io/tools
위 링크를 눌러서 PC의 운영체제(OS)와 일치하는 파일을 설치한다.

예전에는 STS에 zip 파일로 다운로드가 되었는데, 현재는 jar 파일로 변경.


STS 환경 설정하기

앞에서 설치한 sts 폴더 안에는 SpringToolSuite4.ini 파일이 있다.
해당 파일을 메모장 또는 에디터를 이용해서 다음과 같이 설정하고,
다른 이름으로 저장을 클릭해서 인코딩(Encoding)UTF-8로 설정한 뒤에 저장.

  • 변경 전

  • 변경 후

  1. -vmargs 아래에 선언된 requiredJavaVersion은 설치한 JDK의 버전인 1.8로 설정했다. 기본 설정인 11로 두어도 IDE는 정상적으로 실행 됨.

  2. -Xms@@@m 이라고 된 부분은 JVM이 사용하는 힙 메모리(Heap Memory)의 시작, 최대 사이즈 인데, 두 값을 동일하게 설정하면 이클립스(STS) 특유의 버벅거림이 조금은 나아진다고 한다. 램(RAM) 사양별 권장 설정은 다음과 같다.

  • 4GB = 512
  • 8GB = 1024
  • 16GB = 2048

1.Spring 이란?

1.1. Spring의 개념

  • 자바 기반의 웹 어플리케이션을 만들 수 있는 프레임워크

1.2. Spring의 특징

  • 자바 객체와 라이브러리들을 관리해주며, 톰캣과 같은 WAS가 내장되어 있어 웹 어플리케이션을 구동할 수 있다.
  • 경량 컨테이너로 자바 객체를 직접 관리, 객체의 생성 및 소멸과 같은 생명 주기를 관리, Spring 컨테이너에서 필요한 객체를 가져와 사용
  • IOC(제어의 역전) : 사용자의 제어권을 다른 주체에게 넘기는 것
    • 일반적으로 각 객체들이 프로그램의 흐름을 결정하고 각 객체를 직접 생성하고 조작하는 작업 진행 -> 모든 작업을 사용자가 제어하는 구조
    • IOC가 적용된 경우, 객체의 생성을 특별한 관리 위임 주체에게 맡김. 사용자는 객체를 직접 생성하지 않고, 객체의 생명주기를 컨트롤하는 주체는 다른 주체
    • 클래스 내부의 객체 생성 -> 의존성 객체의 메소드 호출이 아닌, 스프링에게 제어를 위임하여 스프링이 만든 객체를 주입 -> 의존성 객체의 메소드 호출
  • DI(의존성 주입) : 객체를 외부에서 생성해 사용하려는 주체 객체에 주입 시켜주는 방식

2.Spring Boot란?

  • 스프링(Spring)을 더 쉽게 이용하기 위한 도구
    • Spring을 이용하여 개발할 때 설정해주어야 할 요소를 간단하게 할 수 있게 만듬

3.Spring Boot 구조


프로젝트 생성 방법

  1. 프로젝트 생성
  • STS 탭의 File > New > Spring Starter Project 선택하여 내용 작성
    • Type(Maven / Gradle) : 프로젝트 관리 도구를 Maven과 Gradle 중에 선택
    • Packaging(Jar / War) : 프로젝트 배포 패키지 형식 선택
  • 필요 라이브러리 선택
  • Spring Boot DevTools : 개발하는데 조금 편리한 기능들을 제공(ex: Live Reload)
  • JDBC API : DB와 연동을 위한 API
  • MyBatis Framework : 객체 지향 언어인 자바의 관계형 데이터베이스 프로그래밍을 좀 더 쉽게 할 수 있게 도와 주는 개발 프레임 워크
  • Oracle Driver : Oracle DB를 사용하기 때문에 사용
  • Cloud BootStrap : 부스트스랩 (지원이 만료되었다. 체크를 해제해도 무방)
  • Spring Web : 스프링 기반 웹 서비스를 사용 하기 위해 체크
  • Spring Web Services : 스프링 기반 웹 서비스를 사용 하기 위해 체크

프로젝트 설정

  1. pom.xml
  • 프로젝트 관리 도구인 Maven의 라이브러리 의존관리를 설정해주는 파일
  • pom.xml 내부의 dependency 추가 및 주석
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.7.4</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.yoon</groupId>
	<artifactId>YOON_SpringBoot</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>
	<name>YOON_SpringBoot</name>
	<description>YOON_SpringBoot</description>
	<properties>
		<java.version>1.8</java.version>
		<spring-cloud.version>2021.0.4</spring-cloud.version>
	</properties>
	<dependencies>
		<!-- <dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency> -->
		
		<!-- <dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency> -->
		
		<!--
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web-services</artifactId>
		</dependency>
		-->
		
		<!--
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>2.2.2</version>
		</dependency>
		-->
		
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
			<optional>true</optional>
		</dependency>
		
		<!--
		<dependency>
			<groupId>com.oracle.database.jdbc</groupId>
			<artifactId>ojdbc8</artifactId>
			<scope>runtime</scope>
		</dependency>
		-->
		
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-tomcat</artifactId>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		
		<!-- JSP View -->
		<dependency>
			<groupId>org.apache.tomcat.embed</groupId>
			<artifactId>tomcat-embed-jasper</artifactId>
		</dependency>
		
		<!-- Jstl tag Library -->
		<dependency>
			<groupId>jstl</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>
		
		<!-- JQuery Download -->
		<dependency>
		    <groupId>org.webjars.bower</groupId>
		    <artifactId>jquery</artifactId>
		    <version>3.6.0</version>
		</dependency>
		
		<!-- Log4 JDBC -->
		<dependency>
		    <groupId>org.bgee.log4jdbc-log4j2</groupId>
		    <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
		    <version>1.16</version>
		</dependency>
		
	</dependencies>
	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>${spring-cloud.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>
  • 주석하는 이유 : DB관련 dependency로써 DB관련 설정이 없다면 내장 Tomcat 실행 시 오류가 발생
  • dependency 추가 이유 :
    • tomcat-embed-jasper : Spring Boot에서는 기본적으로 JSP View를 지원하지 않음
    • jstl : jsp에서 사용 할 jstl 태그(사용 여부에 따라 추가 안해도 무관)
    • log4jdbc-log4j2-jdbc4.1 : db 결과 조회 및 쿼리 출력을 위한 라이브러리
  1. application.properties
  • 기존에 사용하던 web.xml 같은 설정 파일
  • Spring Boot에서 xml파일 사용을 권장 X
  • application.properties파일 내부에 내용 작성
#Server Port
server.port = 8010

#Context Root
server.servlet.context-path=/

#View Resolver
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
spring.mvc.static-path-pattern=/resources/**


# Charater Encoding Filter
spring.http.encoding.charset=UTF-8
spring.http.encoding.enable=true
spring.http.encoding.force=true
  • server.port : Spring Boot에 내장되어 있는 embed-Tomcat의 포트 설정
  • server.servlet.context-path : ContextRoot 설정
  • view.prefix : viewResolver 설정으로 렌더링할 화면의 앞 경로
  • view.suffix : viewResolver 설정으로 렌더링할 화면의 뒷 경로
    • ex) "home" 이라는 화면에 데이터 전달 시 /WEB-INF/views/home.jsp

구조 만들기

여기서는 간단하게 구조만 만들고 2탄에서 구조를 설명 함.

  1. com.yoon 아래에 controller, dao, service, dto를 제작합니다.
  1. src 밑에 main -> webapp -> WEB-INF -> views 폴더 생성
profile
나의 공부 일기

0개의 댓글