본문 바로가기
Java/Spring

[Spring] 기본 개발 환경 구축(이클립스에서 Spring 개발 환경 구축)

by usang0810 2020. 2. 17.

1. STS(Spring Tool Suite)설치

  • Spring Framework를 사용하기 위한 개발 툴
  • 일반적으로는 별도의 설치 도구 또는 이클립스 IDE에서 제공하는 STS 플러그인을 통해 간단히 설치 가능

Eclipse STS 플러그인 설치하기

[Help] - [Eclipse MarketPlace...] 클릭 후 검색 창에 'STS' 검색하여 Spring Tool 3  3.9.9 RELEASE설치

-> 이클립스 버전에 따라 검색되는 STS의 버전도 달라짐 

STS 검색 결과

 

2. Eclipse 구성 설정 추가

이클립스를 사용할 때 여러 JDK 버전을 사용할 때가 있음.

하지만 이클립스 버전에 따라 JDK버전이 너무 낮으면 오류 및 실행 시 문제 발생할 수 있음.

이클립스 내장 버전이 아닌 현재 설치된 JDK버전을 인식하도록 

eclipse.ini 구성 설정 파일에 추가 정보를 기입 후 이클립스 재실행 해야한다.

 

(추가 정보)

-vm

C:\Program Files\Java\jdk1.8.0_212\bin\javaw.exe -> (java의 bin폴더 경로)

 

이클립스 설정 파일

 

eclipse.ini파일에 추가 설정

3. 이클립스 환경 설정

1) 인코딩 설정

  • [Window] - [Preferences] -> 'enco' 검색 후 아래 검색된 내용들 전부 'UTF-8'로 인코딩 적용 -> json file(별도 검색)까지 인코딩 적용

 

2) Server Runtime Environments 설정

  • [Window] - [Preferences] -> 'server' 검색 후 [Runtime Environments를 선택해 톰캣 환경을 구축해준다.

 

3) Git Ignored Resources - target폴더 제외

  • Maven을 이용하여 프로젝트를 진행할 경우 target이라는 폴더가 생성됨.
  • target 폴더는 프로젝트 컴파일 시 컴파일된 파일이 저장되는 target/classes가 생성되는 곳.
  • 일반적으로 maven clean 옵션을 사용하면 제거되어 문제는 없지만 Git, SVN 등을 이용하여 프로젝트를 형상 관리할 경우 컴파일 결과까지 공유할 필요가 없으므로 target폴더를 공유목록에서 제거한다.
  • [Window] - [Preferences] - [Team] - [Ignored Resources] -> [Add Patterns...]를 통해 */target/* 추가

*/target/* 추가

4) Maven 설치

  • http://maven.apache.org/
  • maven 홈페이지의 Download탭에서 Binary zip archive 를 선택해 설치 (* OS가 Window일 때 기준)
  • 다운로드 받은 zip 파일을 압축 해제
  • 라이브러리들이 저장될 폴더 생성 -> 압축 해제한 경로에 'repository' 라는 저장소 역할의 새 폴더 생성
  • Settings.xml 파일 수정 -> conf폴더 - settings.xml 파일을 열어 주석 처리된 <localRepository>를 빼내어 위에 생성한 'repository' 폴더의 경로를 작성

repository 경로 작성 화면

  • 이클립스와 Maven 연동 -> [Window] - [Preferences] - [Maven] - [User Settings]에 접근하여 [User Settings]의 값을 conf 폴더의 settings.xml 로 변경 -> <localRepository> 폴더가 Maven으로 받은 라이브러리 저장소가 됨.

user settings 설정

4. 프로젝트 생성

Spring Legacy Project 생성

[New] - [Spring Legacy Project] - 프로젝트명 입력

** Templates : 'Spring MVC Project' 템플릿 선택

[Next] > 최상위 패키지 지정(최소 3레벨) :  ex) com.kh.spring -> 3번째 레벨이 ContextPath가 됨.

(프로젝트 생성 시 Maven이 필요한 라이브러리와 설정을 인터넷으로 다운로드하는데 일정 시간이 소요됨. -> progress bar를 확인하여 끝날 때 까지 실행하지 말아야 함)

** repository 폴더에 필요한 라이브러리들이 다운로드 되는지 확인.

 

다운로드가 완료된 후 실행하면 JSTL 라이브러리가 없어서 실행하면 에러가 발생한다.

Deployed Resources - webapp - WEB-INF 폴더에서 lib폴더를 생성한 후 그 안에 jstl에 관련된 라이브러리를 넣어주면 에러가 해결됩니다.

jstl 라이브러리 포함된 화면

 

프로젝트 설정 변경

Spring MVC Project는 생성 시 JRE 버전, 서버 등록 등이 제대로 되어있지 않은 상태. -> 설정 수정이 필요

프로젝트 우클릭 - [Properties] - [Project Facets]

  • Java 버전 -> 1.8
  • Dynamic Web Module 버전 -> 3.1

facets 버전 변경 화면

 

JSP 파일 컴파일 위치 지정(jspwork)

WEB-INF 폴더에서 jspwork 폴더 생성

Servers에서 만든 서버의 context.xml를 수정

 

Context 태그에 workDir속성 추가

값으로 생성한 프로젝트 경로를 작성

프로젝트의 경로는 프로젝트 우클릭 - [Properties] - [Resource] - Location에서 확인 가능

 

MyBatis DTD 설정 추가

>> mybatis-config.xml 설정 파일 생성 시 DTD 설정을 해두면, mybatis 관련 xml 파일 설정할 때 재사용 할 수 있음

>> DTD(Document Type Definition) 설정하기

[Window] - [Preferences] - XML - XML Catalog - User Specified Entries - Add - Config

Location : http://mybatis.org/dtd/mybatis-3-config.dtd

=> System ID로 사용

 

Key type : Public ID

Key : -//mybatis.org//DTD Config 3.0//EN

config 추가

 

- Mapper

Location : http://mybatis.org/dtd/mybatis-3-mapper.dtd

=> System ID로 사용

 

Key type : Public ID

Key : -//mybatis.org//DTD Mapper 3.0//EN

mapper 추가

 

Java Resources - src/main/resources에서 'mybatis-config.xml'이라는 xml파일 생성

Create XML file from a DTD file 선택 후 [Next]

Select XML Catalog entry 선택 후 추가한 config 선택 후 [Next] 후 파일 생성

추가한 DTD config파일을 선택

이 때, 위에서 DTD 설정 추가한게 안나오면 오타나 공백이 들어간 것입니다.

 

mybatis-config.xml 파일을 다음과 같이 기본 세팅함

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd" >
<configuration>
	<!-- 1. 마이바티스 설정과 관련된 기본 세팅 선언 -->
	<settings>
		<setting name="jdbcTypeForNull" value="NULL"/>
	</settings>
	
	<!-- 2. 별칭 작성 부분 -->
	<typeAliases>
		
	</typeAliases>
	
	<!-- mapper 파일 등록 부분 -->
	<mappers>
		
	</mappers>
</configuration>

 

Java Resources폴더 안의 pom.xml파일 설정

properties태그안에 자바와 SpringFramework 버전을 본인의 버전에 맞게 수정

<properties>
  <java-version>1.8</java-version>
  <org.springframework-version>5.2.3.RELEASE</org.springframework-version>
  <org.aspectj-version>1.6.10</org.aspectj-version>
  <org.slf4j-version>1.6.6</org.slf4j-version>
</properties>

 

OJDBC6 라이브러리 다운로드를 위한 사설 저장소 추가

properties태그와 dependencies태그 사이에 작성

<!-- ojdbc6 다운로드를 위한 외부 사설 저장소 추가 -->
<repositories>
  <repository>
    <id>Spring Plugins</id>
    <url>https://repo.spring.io/plugins-release/</url>
  </repository>
</repositories>

 

dependencies 태그에 내용 추가

  • 프로젝트에 사용할 라이브러리를 추가 하는 곳
  • maven repository 사이트 : https://mvnrepository.com/
  • 사이트 검색창에 사용할 라이브러리를 검색하고 들어가면 Maven으로 임포트 하는 방법이 나옴
  • 작성된 코드를 그대로 복사해서 붙여넣기

<!-- ojdbc6(JDBC 드라이버) 라이브러리 -->
<!-- https://mvnrepository.com/artifact/com.oracle/ojdbc6 -->
<dependency>
  <groupId>com.oracle</groupId>
  <artifactId>ojdbc6</artifactId>
  <version>11.2.0.3</version>
</dependency>

<!-- Mybatis 라이브러리 -->
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>3.5.4</version>
</dependency>

<!-- Spring에서 Mybatis를 쉽게 사용할 수 있게 하는 라이브러리 -->
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis-spring</artifactId>
  <version>2.0.3</version>
</dependency>

<!-- Spring에서 JDBC를 쉽게 사용할 수 있게하는 라이브러리 -->
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-jdbc</artifactId>
  <version>${org.springframework-version}</version>
  <!-- 위의 properties에 작성된 Spring의 버전 -->
</dependency>

<!-- Connection Pool을 사용하기 위한 라이브러리 -->
<!-- https://mvnrepository.com/artifact/commons-dbcp/commons-dbcp -->
<dependency>
  <groupId>commons-dbcp</groupId>
  <artifactId>commons-dbcp</artifactId>
  <version>1.4</version>
</dependency>

<!-- GSON 라이브러리 -->
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
  <groupId>com.google.code.gson</groupId>
  <artifactId>gson</artifactId>
  <version>2.8.6</version>
</dependency>

 

build태그의 plugin태그중 org.apache.maven.plugins의 source 태그와 target 태그를 JDK버전에 맞게 수정

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>2.5.1</version>
  <configuration>
    <!-- 빌드 시 해당 프로젝트의 JDK 버전에 맞게 빌드 되도록 컴파일러 설정 -->
    <source>1.8</source>
    <target>1.8</target>
    <compilerArgument>-Xlint:all</compilerArgument>
    <showWarnings>true</showWarnings>
    <showDeprecation>true</showDeprecation>
  </configuration>
</plugin>

 

WEB-INF 내부에 있는 spring 폴더 위치 변경

  • WEB-INF가 포함된 webapp 폴더를 애플리케이션 개발 완료 후 배포되는 부분으로 배포와 관련된 파일만을 담고 있는 것이 맞음.
  • 하지만 spring 폴더에 있는 root-context.xml 등의 파일은 서버 구동 시 설정되는 내용 또는 DB연결, AOP설정, HandlerMapping, ViewResolver 등 애플리케이션 구동, 설정 등과 관련된 내용을 작성하기 떄문에 배포되는 webapp 폴더에 들어있는 것은 좋지 않음.

Deployed Resources - webapp - WEB-INF폴더 안의 spring 폴더를

Java Resources - src/main/resources 폴더로 위치를 옮겨준다.

 

web.xml 파일 수정

spring폴더의 위치를 변경해서 web.xml파일안의 경로들을 수정해줘야한다.

classpath: 가 Java Resources의 src/main/resources를 나타냄

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee https://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

	<!-- 
		web.xml
		- tomcat (WAS) 구동 시 제일 먼저 읽어 들이는 파일
		- 서버 실행 시 초기에 읽어야 할 설정파일(xml)을 읽어 들이도록 내부에 작성(등록).
		+ Servlet 실행 이전에 Servlet 초기화(init)하는 용도로도 사용.
	 -->

	<!-- 
		contextConfigLocation
		ContextLoaderListener로 pre-loading을 진행할 설정 xml 문서들의 경로를 등록
	 -->
	<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:spring/root-context.xml</param-value>
	</context-param>
	
	<!-- 
		ContextLoaderListener
		web.xml 내부에 읽어 들여야 할 설정 xml 문서들 중
		가장 먼저 로딩(pre-loading) 되어야 하는 xml 문서를 읽기 위한 리스너
	 -->
	<!-- Creates the Spring Container shared by all Servlets and Filters -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<!-- 
		DispatcherServlet
		요청되는 url-pattern에 해당하는 Controller를 HandlerMapping하고
		응답 되어질 페이지를 제어하는 View Resolver의 정보를 저장하고 있는 문서(xml)
		-> DispatcherServlet도 web.xml에 등록해야만 사용 가능
	 -->
	<!-- Processes application requests -->
	<servlet>
		<servlet-name>appServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:spring/appServlet/servlet-context.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
		
	<servlet-mapping>
		<servlet-name>appServlet</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>

</web-app>

  + 한글 깨짐 방지를 위한 필터 추가

servlet-mapping 태그 밑에다가 추가

<!-- 한글 깨짐 방지를 위한 Filter 추가 -->
<!-- 별도의 filter 클래스를 만들지 않고 스프링에서 제공하는 filter를 사용 -->
<filter>
  <filter-name>encodingFilter</filter-name>
  <filter-class>org.springframework.web.filter.CharacterEncodingFilter
  </filter-class>
  <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>encodingFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

+ Welcome-file-list 추가

context-param태그 위에다가 추가

<welcome-file-list>
	<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

'Java > Spring' 카테고리의 다른 글

[QueryDSL] Spring Boot build.gradle 설정  (0) 2023.06.29
[Spring] 구글 메일 전송  (0) 2020.03.05