STS 프로젝트를 생성했다면 컴퓨터의 환경과 프로젝트 환경을 맞춰줘야 한다. 자바는 기본적으로 1.6, 스프링은 3.1.1.RELEASE 버전으로 되어 있기 때문에 Java를 설치된 버전과 맞춰주고 스프링은 최신 혹은 현재 상황에 맞는 버전으로 맞춰 줄 필요가 있다.
자바 버전 맞추기
기본적으로 STS를 생성하면 JDK 버전이 1.6으로 맞춰져 있다. 그 이상의 버전을 사용할 경우 STS의 설정을 바꿔 줄 필요가 있다. 필자는 자바 11을 사용하기 때문에 1.6 → 11로 변경한다.
윈도우 익스플로러를 켜고 "C:\Program Files\Java"로 들어가면 설치된 자바 버전을 볼 수 있다. 필자의 컴퓨터는 자바 11이 설치되어 있는 것을 볼 수 있다.(운영체제가 32bit 환경일 경우 Program Files(x86)으로 들어가야 한다.)
클릭해서 크게보실 수 있습니다.
프로젝트를 우클릭하여 Properties를 클릭한다. 좌측 검색창에 "compiler"를 검색하여 "Java Compiler"를 클릭한다. 기본적으로 "Use compliance from execution..."이 체크되어 있는데 이를 체크해제한 후 바로 아래에 Compiler compliance level을 변경해준다. 필자는 자바 11이기 때문에 11로 변경했다. 아래 Apply 버튼을 눌러 변경된 설정을 적용한다.
좌측 상단 검색창에 "facets"를 쳐서 "Project Facets"를 클릭한다. 목록에서 "Java"의 버전을 클릭해 11로 맞춰주고 Apply를 눌러 적용시킨 후 창을 종료한다.
pom.xml 수정
변경 전변경 후
pom.xml에서는 자바 버전과 스프링 버전을 수정해야 한다. 자바 버전의 경우 위에서 언급했듯 기본값이 1.6으로 잡혀 있기 때문에 11로 변경해준다. 스프링의 경우 Maven Repository 사이트를 참조해서 최신 버전이나 원하는 버전을 넣는다. (Maven Repository - Spring Context 바로가기)
필자는 2022-02-15 기준으로 5.2.19 버전을 넣었다.
추가적으로 코드 가장 하단에 있는 plugin의 자바 버전도 수정해준다.
변경 전변경 후
모두 수정하였으면 ctrl + s를 눌러 프로젝트를 업데이트한다. 하나라도 버전 변경을 잊어버릴 경우 프로젝트를 수동으로 업데이트할 때 버전이 다시 초기화되어 버리는 현상을 볼 수 있을 것이다. 실수하지 않고 모두 바꾸도록 하자.
Git에 대해 더 자세히 알고 싶다면 깃 공식 문서인 git-scm를 참조하는 걸 추천드립니다. 한국어를 포함한 여러 언어를 지원하고 있습니다. 챕터별로 잘 나누어져 있고 개념들을 풀어서 자세히 설명하고 있기 때문에 git에 대해 지식이 없다면 도움이 될 것 같습니다. 다만 공식 홈페이지에서 진행하는 설치 및 연동 과정(CLI)은 리눅스를 기반으로 하고 있기 때문에 윈도우 연동 과정(GUI)과는 거리가 있습니다.
생성, 연동 순서
"프로젝트 생성 및 원격 레포지토리 연동"을 하는 방법은 한 가지로 정해져 있자 않고 여러 방법이 있다. 그 중 이 포스팅에서 소개하는 방법은 "먼저 깃허브에서 원격 레포지토리를 생성하고 내 PC로 복제(Clone)한 뒤 복제한 위치에 프로젝트를 생성"하는 방법이다. 간략하게 순서를 요약하면 다음과 같다.
원격 레포지토리 생성
원격 레포지토리를 내 PC로 복사(Clone)
복사해온 레포지토리 위치에 프로젝트 생성
Commit/Push
Remote Repository 만들기
Github에 접속해 로그인을 수행한 뒤 메인 화면에서 Create repository 혹은 Start a project를 클릭해 레포지토리 생성 화면으로 이동한다.
Repository name에 레포지토리 이름을 적고Description에는 생성하려는 레포지토리에 대한 가벼운 설명이나 소개를 적는다. 다음으로 레포지토리에 대한 공개 여부를 설정할 수 있는데 다른 사람이 내 프로필 혹은 레포지토리에 대한 주소를 통한 접근을 허용하려면public을, 개인 프로젝트로 사용하거나 공개하지 않는다면 private를 체크한다.
페이지 하단에서는 레포지토리를 생성하면서 추가할 수 있는 파일 옵션을 선택할 수 있다. 각 항목을 선택하면 그에 맞는 파일이 생성된다.
Add a README file : 레포지토리 소개를 작성할 수 있는 파일을 생성한다. > 포트폴리오나 외부에 공개할 프로젝트라면 추가하는 것이 좋고, 외부로 공개될 일이 없는 개인 프로젝트라면 생략해도 좋다.
Add .gitignore : 로컬 레포지토리에서 Push를 수행할 때 제외할 파일 패턴 목록을 가지는 파일을 생성한다. > 공개/비공개를 막론하고 반드시 생성해주는 것이 관리 측면에서도 좋고, 파일 성격에 따라 보안 이점이 있을 수 있다.
Choose a license : 생성할 레포지토리에 대한 라이센스를 설정한다. > 외부에 공개하지 않을 프로젝트라면 생성해도 의미를 가지지 않지만 외부에 공개하는 경우 필수적으로 생성하는 것이 좋다.
예제에서는 readme, gitignore 두 가지를 선택해 추가해주었다.
Remote Repository 복사
이클립스에서 Git 관련 기능을 다루기 위해서 이클립스 상단 리본 메뉴에서 [Window → Show View → Other...]로 들어간다. 필터창에 git을 입력해 나오는 목록(사진 좌측)에서 "Git Repositories"와 "Git Staging"을 선택하고 Open을 누르면 이클립스 하단(혹은 좌측)에 위와 같은 탭(사진 우측)이 추가되는 것을 볼 수 있다.
가장 먼저 앞서 깃허브에서 생성한 원격 레포지토리를 그대로 내려받아 로컬 레포지토리로 사용할 것이다. [Git Repositories] 탭에서 "Clone a Git Repository"를 선택한다.
레포지토리간 Push/Pull이 정상적으로 수행되려면 두 가지 중 하나의 조건이 갖춰져야 한다.
Push > 대상 원격 레포지토리가 비어 있어야 한다. 다시 말해 커밋 기록이 없어야 한다. > 대상 원격 레포지토리와 로컬 레포지토리가 공통 조상(같은 히스토리)을 가져야 한다.
Pull > 대상 로컬 레포지토리가 비어 있어야 한다. 다시 말해 커밋 기록이 없어야 한다. > 대상 로컬 레포지토리와 원격 레포지토리가 공통 조상(같은 히스토리)을 가져야 한다.
필자는 앞서 원격 레포지토리를 생성할 때 readme, gitignore 두 항목을 체크했다. 이에 따라 원격 레포지토리에는 각 항목에 맞는 파일 두 개가 생성되었는데, 원격 레포지토리 입장에서 이는 최초의 커밋이 되었다.
이러한 상황에서 프로젝트를 생성한 뒤 프로젝트를 Commit, Push 한다고 가정하면 Push 단계는 반드시 실패한다. Push란 로컬 레포지토리에 작성한 히스토리를 원격 레포지토리에 이어 작성하는 행위와 같다. 하지만 현재 로컬 레포지토리는 프로젝트를 만든 후 초기 상태를 commit 한 히스토리를, 원격 레포지토리는 readme, gitignore를 생성한 commit 히스토리를 가지고 있는 상태이기에 히스토리를 이어쓸 수 없다. 다시 말해 두 레포지토리간 공통 조상이 다르기 때문에 히스토리 불일치가 발생, Push를 수행할 수 없게 되는 것이다.
이렇듯 히스토리 불일치를 사유로 한쪽의 히스토리를 완전히 비워둔 상태로 연동을 진행하거나 한 쪽의 레포지토리를 다른 한 쪽에 복사해온 뒤 이어서 Commit, Push를 진행하는 것이다.
이 포스팅에서는 후자인 한 쪽의 레포지토리를 복사해오는 방식을 다루고 있다.
여기서 원격 레포지토리를 복사해 올 주소가 필요한데, 앞서 생성한 원격 레포지토리에 접속하여 우측에 [Code]를 누르면 주소를 복사할 수 있다.
URI 항목에 방금 복사한 주소를 붙여넣기 하면 오른쪽처럼 Host, Repository path, protocol이 자동으로 셋팅된다. 이제 레포지토리에 접근하기 위해 인증에 필요한 User, Password를 입력해야 하는데 User는 Github를 가입할 때 만들었던 아이디를 비밀번호는 계정 비밀번호가 아닌 개인 액세스 토큰을 입력한다. 2021-08 까지는 계정 비밀번호로 인증했지만 이후부터는 보안상의 문제로 개인 액세스 토큰 인증으로 변경되었다.
브랜치를 선택하는 화면이다. 별도로 생성한 브랜치가 없기 때문에 그대로 Next를 눌러 넘어가면 기본 브랜치가 선택된다.
원격 레포지토리를 내려받아 저장할 위치를 지정한다. 원격 레포지토리를 내려받으면 이 레포지토리(디렉터리)는 이제부터 로컬 레포지토리로서 사용될 것이다. 저장소를 내려받을 위치는 "평소 프로젝트를 생성/관리하는 경로"로 지정한다. 이유는 다음과 같다.
원격 레포지토리 클론이 성공한 경우 "C:\Workspace\Java\GitTest"의 내부는 위와 같다. 원격 레포지토리에서 생성한 gitignore, readme 파일을 내려받은 것을 확인할 수 있고 숨김 상태로 생성된 ".git" 디렉터리를 확인할 수 있다. 이 디렉터리는 로컬 레포지토리로 사용되는데, 이 디렉터리는 통상적으로 프로젝트 루트에서 관된다. 따라서 이 위치에 그대로 프로젝트를 만들 것이다.
작업을 완료한 후 이클립스로 돌아와 Git Repositories 탭을 보면 로컬 저장소가 생성된 것을 볼 수 있다.
.gitignore 파일 생성하기
앞서 원격 레포지토리에서 gitignore 파일을 생성했고 그 레포지토리를 복제(Clone)하였기에 gitignore 파일을 PC에서직접 편집할 수 있다. 이클립스에서 직접 편집할 수 있다면 편하겠지만 이클립스는 기본적으로 .으로 시작하는 파일은 패키지 익스플로러에서 숨겨지도록 설정되어 있다. 물론 설정을 변경하면 .으로 시작하는 파일이라도 익스플로러에서 확인할 수 있지만 버전마다 설정하는 방법이 조금씩 다르다는 것을 확인하였으므로 여기서는 다루지 않도록 않으려 한다.
www.toptal.com
gitignore에 작성할 큰 틀은 toptal 에서 자동 생성할 수 있다. 사이트에 접속해서 현재 환경에 맞는 키워드를 작성하고 생성을 누르면 그에 맞는 패턴들을 자동으로 작성해준다. 큰 틀은 이 사이트를 통해 작성하고 프로젝트 환경에 따라 추가적으로 필요한 것이 있다면 직접 추가하도록 한다. 작성된 텍스트를 복사한 뒤 앞서 생성한 ".gitignore"에 붙여넣기한다. 이 때 편집기는 메모장, 워드 패드, VS Code 어떤 것을 사용해도 좋다.
원격 저장소에 프로젝트를 push할 때 프로젝트와 관련이 없는 파일이나 백업 파일, 컴파일 된 파일 등은 올리지 않는다. 프로젝트를 올릴 때 파일을 일일이 선택하기보다 프로젝트 단위로 올리게 되는 일이 잦은데 이 과정에서 앞에 말한 파일들은 추적 대상에서 벗어나게 할 필요가 있다. 이 때 사용하는 것이.gitignore파일이다. 프로젝트에서 깃에 올릴 파일을 찾는 과정을 추적(tracking)이라고 하는데, .gitignore에 등록된 파일들은 untracked files가 되어 추적 대상에서 제외된다.
프로젝트 생성
[File > New > Java Project]를 선택한다. 프로젝트 이름은 앞서 생성한 디렉터리 이름과 같은 이름을 지정하고 위치 역시 같은 위치를 지정해준다. "Use default location"을 해제하면 위치를 직접 지정할 수 있다.
참고로 예제로 사용함에 있어 자바 프로젝트 구조가 가장 심플했기에 자바를 선택하였지만 다른 프로젝트를 생성해도 상관없다.
프로젝트를 생성하고 나면 기본 구조에 앞서 생성한 readme 파일이 포함되어 있는 것을 확인할 수 있다. 앞서 말했듯 .으로 시작하는 파일은 탐색기에 표시되지 않으므로 .gitignore는 탐색기에 포함되지 않는다.
추가적으로 프로젝트를 우클릭하여 [Team] 메뉴를 펼쳐보면 기존에 보이지 않던 Commit, Pull 등의 메뉴가 추가된 것을 확인할 수 있다. 이로 인해 방금 생성한 프로젝트가 로컬 레포지토리를 정상적으로 인식되고 있다는 것을 알 수 있다.
Commit/Push를 하려면 파일 생성/수정이 필요하기에 클래스를 하나 추가했다.
Commit, push하기
Git Staging 탭의 Unstaged Changes를 보면 처음 생성된 파일 혹은 수정이 발생한 파일이 표시되는데 처음이라면 모든 파일이 대상이 된다.
Unstaged Changes의 요소(Commit 대상)들은 우측의 +, ++ 버튼으로 목록의 Staged Changes로 이동할 수 있다. 즉 커밋할 대상을 선택하는 것이다. 처음 커밋이니 ++ 버튼으로 모든 파일을 추가한 뒤 커밋 메시지(커밋에 대한 일종의 주석)를 입력해준다. 마지막으로 하단의 Commit and Push를 눌러 먼저 커밋을 진행한다. 다음 화면에서 Push를 할 것인지 묻는 화면이 나오는데 마찬가지로 Push를 클릭해 진행한다.
톰캣을 설치한 직후 자주 볼 수 있는 에러 메세지다. Tomcat은 기본적으로 8080포트를 가지는데 이미 해당 포트를 사용하고 있는 프로세스가 있기 때문에 다른 포트로 변경하라는 의미이다. 톰캣의 포트 번호를 변경해주면 간단히 해결되는 문제다.
사용중인 포트 확인
현재 8080포트의 사용 여부는 netstat 명령어를 통해 확인할 수 있다. 여기서 추가로 8080이 사용중인 프로세스를 확인하고 싶다면 tasklist 명령어로 확인할 수 있다. netstat에서 얻은 pid를 검색하면 pid가 3372인 task는 "TNSLSNR.EXE"인 것을 확인할 수 있다.
pid를 알아냈다면 작업관리자의 서비스 탭에서도 확인할 수 있다. 정렬 기준을 pid로 잡고 3372를 찾아보면 "OracleXETNSListener"라는 프로세스를 확인할 수 있다. 해당 프로세스는 이름에서 확인할 수 있듯 오라클로서 오라클 DBMS는 설치할 때 기본적으로 8080포트를 가지기 때문에 톰캣과 포트가 겹쳐버린 상황이라는 것을 알 수 있다.
포트 번호 변경
다른 포트로 변경하기 위해 먼저 find 명령어로 사용하려는 포트가 사용중인지 확인한다. 위에서 8080을 검색한 결과와 달리 아무것도 뜨지 않는다면 현재 사용중이지 않은 포트라는 뜻이다.
이클립스에서 스프링 프로젝트를 생성했을 때 아무것도 하지 않았는데도 프로젝트에 빨간 불이 들어올 때가 있다.
프로젝트를 펼치고 에러가 있는 파일을 찾아 계속 하위 폴더로 이동하면 home.jsp에 오류가 있음을 확인할 수 있다. 에러가 나는 코드에 마우스를 대보면 "Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core" 라는 에러 메시지를 출력하고 있다.
이클립스에서 스프링 프로젝트를 시작할 때 많이 겪는 에러가 아닐까 한다. 이 에러 메시지로 구글링을 하면 여러 가지 에러 발생 원인과 해결방법이 존재한다. 그 중 내 컴퓨터 환경에서 이 에러가 발생한 원인은 자바와 이클립스의 버전이 맞지 않았기 때문이었다.
에러 발생 상황
[File - new]으로 스프링 프로젝트를 생성하는 화면이다. 여기서 Spring MVC Project를 선택하고 Next 버튼을 누르면 에러가 발생할 때가 있다. 예전에 마주하고 해결했던 에러이기에 아차하고 금방 처리해서 스샷은 없지만 에러 메시지 창에 아래와 같은 메시지를 출력하며 더 이상 프로젝트 생성이 진행되지 않는다.
"An error has occurred. See error log for more details. java.lang.ExceptionInInitializerError"
에러 발생 원인
이 에러가 일어나는 이유는 이클립스 버전과 자바 버전이 맞물리지 않기 때문이다. 이클립스 버전 2020-06 까지는 자바 8을 지원했지만 2020-09부터는 자바 11만 지원한다. 물론 기존의 자바 코딩을 하는데 문제는 없다. 이것은 스프링에 국한된 이야기다.
해결 방법
1. Java 8을 사용하면서 Eclipse 2020-09 이상 버전일 경우
→ Java 11을 설치하고 이클립스의 jdk 경로를 다시 잡아준다..
2. Java 8을 사용해야만 하는 환경일 경우
→ Java 8을 사용해야만 하는 환경이라면 이클립스 자바 8을 지원하는 이클립스 2020-06버전을 설치해서 사용한다.
3. Java 8과 11이 같이 설치되어 있는 경우
→ 이클립스의 버전이 2020-06 이하라면 이클립스의 jdk 경로를 java 8로 잡아준다.
→ 이클립스의 버전이 2020-09 이상이라면 이클립스의 jdk 경로를 java 11로 잡아준다.
이클립스, 자바 버전을 제대로 볼 줄 모르겠고 경로 잡는 것도 힘들다라고 한다면 프로젝트나 설정을 백업한 뒤 이클립스와 자바를 모두 삭제하고 맞는 버전으로 다시 설치하는 것도 좋을 것이다.
만약 목록에 사용중인 버전이 없을 경우 가장 하단에 있는 "JDBC Downloads page for older releases"를 선택한다. 필자의 버전은 11g인데 구버전 목록에도 없어서 적당히 12c를 선택했다.
ojdbc*.jar 파일 이 여러 개을 선택하고 다운로드 한다.
그래도 뭘 받아야할지 모르겠다면 가장 범용성이 높은 OJDBC8.jar을 다운로드한다.
이클립스에서 오라클 연동
이클립스에서 연동하고자 하는 프로젝트 우클릭 후 [Build Path → Configure Build Path...]를 선택한다.
상단 리본메뉴에서 "Libraries"를 선택하고 목록에서 "Modulepath"를 선택하면 비활성화 상태였던 우측 메뉴가 활성화 된다. "Add External JARs..."를 선택한다.
아까 다운받은 "ojdbc*.jar" 파일을 선택하고 돌아온 창에서 "Apply and close를 눌러준다."
프로젝트 내부에 "Referenced Libraries"가 추가된 것을 볼 수 있고 목록을 펼쳐보면 방금 추가한 파일의 위치를 가리키고 있는 것을 볼 수 있다. 위 사진으로 알 수 있듯이 파일을 복사한 것이 아니라 ojdbc 파일을 절대경로로 가리키고 있기 때문에 파일을 삭제하거나 다른 위치로 옮길 경우 참조가 불가능해지니 주의하자.
오라클 접속 테스트
import java.sql.Connection;
import java.sql.DriverManager;
public class Oracle {
public static void main(String[] args) {
Connection con = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String id = "scott";
String pw = "tiger";
System.out.println("DB 연결 성공");
try {
con = DriverManager.getConnection(url, id, pw);
System.out.println("계정 접속 성공");
} catch(Exception e) {
System.out.println("계정 접속 실패");
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
System.out.println("DB 연결 실패");
e.printStackTrace();
} finally {
try {
if(con != null)
con.close();
} catch(Exception e) {
e.printStackTrace();
}
}
}
}
드라이버와 url은 그대로 사용하고 id와 pw는 본인이 오라클 DB에 접근할 때 사용하는 계정을 사용한다. DB 연결에 실패하면 드라이버가 제대로 연동되었는지 확인하고 계정접속에 실패했다면 id와 password를 확인한다.
웹 서버를 공부해가며 짧막한 테스트 코드를 작성했을 때 웹 브라우저에 원하는 결과가 나오지 않고 글씨가 깨져 보이는 현상은 누구라도 한 번은 겪어봤을 것이다. 이런 현상은 대부분 이클립스 인코딩 방식이 UTF-8이 아니기 때문에 발생하는 것이다. 서론에서 짧게 인코딩이란 무엇인지, UTF-8은 또 무엇인지 알아보고 설정하는 과정을 보도록 하자. 설정하는 방법만 보고자 한다면 바로 스크롤을 내리자.
Encoding
데이터를 전송할 때 암호화하는 것을 인코딩이라 한다. 반대로 데이터를 수신한 측에서 암호화 된 데이터를 부호화하는 것을 디코딩이라 한다. 웹 환경에서 송수신의 주체는 웹 브라우저와 웹 서버가 된다.
MS949, EUC-KR, UTF-8
이클립스에서 웹 개발을 할 때 사용되는 html, jsp등의 텍스트 파일은 기본적으로 "MS949"이라는 문자셋으로 인코딩되되도록 되어 있는데 여기서 MS949는 EUC-KR의 확장된 문자셋이다. EUC-KR은 UTF-8과 더불어 대표적인 한글 문자셋으로 EUC-KR은 문자당 2byte로 한글, 한국에서 통용되는 일부 한자, 영문을 표현할 수 있고, UTF-8은 1~4byte의 가변 길이를 가지며 유니코드를 표현할 수 있다. 유니코드는 전세계 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준이다.
UTF-8을 사용하는 이유
UTF-8은 유니코드를 사용하기 때문에 전 세계 모든 언어와 호환된다는 장점이 있다. 때문에 전 세계에서 UTF-8 방식이 가장 많이 사용되고 있고 유니코드를 지원하는 프로그램의 경우 대부분 UTF-8을 사용한다.
이클립스 UTF-8 환경으로 설정하기
이후로 진행하는 모든 환경 설정은 [Window - Prefeerences]에서 진행한다.
Workspace 인코딩 설정
좌측 최상단에서 "workspace"를 입력하면 메뉴 중에 문자열이 일치하는 메뉴가 나타나는데 여기서 [General → Workspace]를 선택한다. 그리고 하단의 Text file encoding에서 Other를 선택하고 목록에서 "UTF-8"을 선택한다.
Java, JSP 인코딩 설정
검색창에 "content types"를 검색한다. 목록에서 [General → Content Types]를 클릭한 후 중앙의 박스에서 Java Class File을 클릭한다. 아래의 Default encoding에 "UTF-8"을 입력한 후 Update를 눌러준다.
위 화면에서 그대로 진행한다. 중앙 박스에서 Text 카테고리를 펼쳐서 JSP를 찾아서 선택한다. Default Encoding이 "ISO-8859-1"로 되어 있는데 UTF-8로 수정한 뒤 Update를 눌러준다.
"HTML"을 검색한 후 [Web → HTML Files]를 클릭한 후 중앙에 보이는 Encoding을 "UTF-8"로 설정한다.
위 화면의 검색결과에서 [Web → JSP Files]를 선택한 후 Encoding을 "UTF-8"로 변경한다.
윈도우를 기준으로 스프링을 시작하기 위해 Java, Eclipse, Spring을 설치하는 과정입니다.
자바, 이클립스 버전에 주의!
여기서 굳이 자바와 이클립스 버전을 설명하는 이유는 버전이 잘 맞물리지 않으면 스프링 프로젝트를 생성할 때 "An error has occurred. See error log for more details. java.lang.ExceptionInInitializerError"라는 에러를 보게 되기 때문이다. 이 에러를 해결하기 위해 구글링을 하면 ini 파일을 수정한다던가 이클립스 경로에서 clean을 한다던가하는 해결책이 존재하는데 별 짓을 다해도 해결이 쉽지 않다. 이 에러가 일어나는 이유는 이클립스와 자바 버전이 맞물리지 않기 때문이다.
이클립스는 3개월 주기(3, 6, 9, 12)로 새로운 패키지가 제공되는데, 2020-09 버전부터는 자바 8이 아닌 자바 11을 사용해야 스프링을 사용할 수 있다. 자바 8을 사용해야만 하는 환경이라면 2020-06버전을 다운받아야 스프링 프로젝트를 생성할 수 있다.
해당 링크로 접속하면 바로 최신 버전의 자바를 버전별로 보여준다. 필자는 이클립스 최신버전을 설치할 예정이기 때문에 Java 11 버전인 위에서 2번째 "Java SE 11.0.14(LTS)"을 선택했다.
다음 페이지에서 Windows 탭을 선택한 후 첫 번째 인스톨러를 다운받는다. 다운로드를 위해서는 로그인이 필요한데 자바를 비롯해 오라클에서 제공하는 프로그램은 다운받을 때마다 로그인이 필요하니 가입해두자.
(설치는 별거 없기 때문에 생략)
2. Eclipse 설치
이클립스를 다운받기 위해 사이트로 이동한다. 이 글을 보는 시점에서 가장 최신의 Eclipse를 다운받고자 한다면 홈페이지를 경유해 우측 상단의 Download를 선택하면 된다.(첫 번째 링크 선택) 개발 환경에 의해 버전에 제약이 있어 이전 버전으로 다운로드 하고자 할 경우 두 번째 링크로 이동해서 원하는 버전을 찾아서 설치하도록 하자. 이 글은 전자를 기준으로 한다.
이동한 페이지에서 좌측 하단에 있는 Get Eclipse IDE 2021-12의 Download x86_64를 클릭한다.
Download를 선택해 설치 툴을 다운받는다.
다운받은 툴을 실행시키면 위와 같은 화면이 나온다. 목록에서 위에서 2번째 "Eclipse IDE for Enterprise java..."를 선택한 후 원하는 경로를 잡고 INSTALL을 눌러 설치한다.
3. Spring Framework 설치
이클립스를 실행한 후 상단 리본 메뉴에서 [Help → Eclipse Marketplace..] 선택
검색창에 "spring"을 검색하고 "Spring Tools 4.."를 install한 뒤 다음 화면에서 "install More"를 클릭해 메인 화면으로 다시 돌아온다. 메인에서 "Spring Tools 3 Add On For..."를 install하고 하단의 "Install Now"를 선택한다.
위와 같은 화면이 나왔다면 모두 체크된 상태인지 확인하고 "confirm"을 클릭한다.
라이센스에 동의하고 finish를 클릭해 설치를 진행한다. 이클립스 하단의 상태표시줄 우측을 보면 다운로드 진행 현황을 볼 수 있다. 다운로드가 끝나면 이클립스를 재시작하라는 메시지 창이 나오니 재시작을 수행해준다.
스프링 프로젝트를 생성하기 위해 자바 프로젝트를 생성할 때처럼 [File - New]로 진입해도 Spring이 보이지 않는다. 현재 이클립스 레이아웃이 EE에 맞춰져 있기 때문이다. "Other"를 선택해 Spring을 직접 찾아도 되지만 Spring 프로젝트를 진행하기에 최적화 된 레이아웃을 따로 선택하자.
상단 리본 메뉴에서 우측 끝으로 가면 위와 같이 창문모양 아이콘을 볼 수 있다. 이 아이콘을 클릭하면 이클립스의 레이웃을 원하는 개발환경에 맞춰 변경할 수 있다. Spring을 개발할 것이기 때문에 Spring을 선택해준다.
스프링을 선택하면 좌측 메뉴에 Spring 프로젝트를 생성하는 메뉴가 생긴 것과 하단에 Servers 탭이 추가된 것을 볼 수 있다. [File → New]로 생성가능한 프로젝트 목록에도 스프링이 추가된 것을 볼 수 있다. 한 번 이상 선택된 Perspectives는 단축키 Ctrl + F8을 통해서 빠르게 전환할 수 있다.
Spring 설치는 끝났다. 이제 Spring 프로젝트를 생성할 수 있지만 서버로서 역할을 하려면 Apache Tomcat이 있어야 한다. 톰캣 설치가 필요하다면 다음 포스팅을 참조하도록 하자.