1. 스프링 프로젝트 생성

1. File > New > Other 를 선택한다.

2. Spring > Spring Project를 선택한다.


3. 프로젝트의 이름을 입력하고, Spring MVC Project를 선택한다.

여기서는 최초의 스프링 프로젝트이니, 프로젝트의 이름을 first 로 지정하였다.


4. package를 입력한다. 

package는 최소 3레벨 이상 ( [1레벨].[2레벨].[3레벨] )로 구성하게끔 되어있다. 이는 자바 코딩 규칙 (Coding Convention을 찾아보면 확인할 수 있다.) 본인은, "com.company.first"라는 package를 사용하기로 한다.


5. Finish를 누르면 프로젝트가 생성이 되고, 인터넷에서 스프링 프로젝트에 필요한 라이브러리를 자동으로 다운받기 시작한다.

↑ 위 스크린샷의 오른쪽 하단 구석에 있는 버튼을 누르면, 화면과 같이 라이브러리의 다운이 Background에서 이루어지며, 진행상황을 Progress View에서 볼 수 있다. 


우리가 생성한 Spring MVC Project에는 여러가지 라이브러리들이 필요한데, 프로젝트의 생성과 동시에 메이븐이 자동적으로 인터넷에서 필요한 라이브러리를 다운받는 과정이다. 


6. 다운로드가 완료된 것을 확인하고, 생성된 프로젝트에 에러가 없는것을 확인한다.

이와같은 프로젝트가 생성된다. 

본인은 Package Explorer에서 개발을 하는데, 사람에 따라서는 Project Explorer가 더 편하다고 이야기 하는 사람도 많다. 자신이 개발하면서 편한 View를 보며 진행하면 된다. 이 글에서는 앞으로 계속 Package Explorer에서 보이는 것을 기준으로 설명한다.


※ 만약 Package Explorer가 보이지 않는다면, 

1) Window > Open View > Other를 선택한다.

2) Package Explorer를 검색하여 추가한다.


※ 처음에는 왜 이렇게 많은 폴더가 생겼으며, 이러한 폴더들은 어떠한 역할을 하는지 한눈에 파악하기가 힘들다. 이 폴더 구조는 다음 글에서부터 전체적인 구조와 각 폴더의 역할을 설명한다.


1.1 Maven Dependencies

앞에서, Maven이 자동적으로 필요한 라이브러리를 받아온다고 했는데, 그 받아온 라이브러리들은 Maven Dependencies라는 곳에서 확인할 수 있다.


이 프로젝트를 진행하며 필요한 라이브러리들이 다운받아진 것을 알 수 있다. 

그러면, 이 라이브러리들은 어디에 저장되어있는가? 라는 질문이 있을 수 있다.

그에 대한 답은, 예전에 우리가 개발환경을 설정하면서 Maven의 LocalRepository를 변경한 것을 기억한다면, 찾을 수 있을것이다. 

예전에 우리는 C:\dev\apache-maven-3.2.2 밑에 repository라는 폴더를 만들고, LocalRepository를 변경하였었다. 그 폴더로 들어가보자. 

그러면 다음과 같이 몇몇 폴더가 생긴것을 알 수 있다. 


각각의 폴더에 우리가 필요한 라이브러리들이 위치한다. 

예를 들어, Maven Dependencies 맨 위에 있는 "spring-context-3.1.1.RELEASE.jar"를 찾아보자.  이 jar 파일은 org\springframework\spring-context\3.1.1.RELEASE 폴더에 위치하고 있다.



이런 식으로 인터넷에서 찾아온 라이브러리들이 관리된다.


그러면, 프로젝트 내에서 라이브러리의 추가 및 삭제, 관리는 어디서 되는지를 살펴보자.


1.2 POM.xml

1. pom.xml 파일을 더블클릭하여 열어보자.


그러면 다음과 같은 화면이 보이고, 중간쯤에 있는 pom.xml 탭을 선택한다.


2. pom.xml을 확인하자. 

↑ 이와 같은 xml 파일을 볼 수 있다. 우리가 필요한 라이브러리의 관리는 모두 pom.xml에서 관리한다. 


여기서 <dependency> </dependency> 라는 태그를 확인 할 수 있는데, 이 태그가 하나의 라이브러리를 의미한다. 만약 라이브러리를 추가하고 싶으면, <dependency></dependency>라는 태그를 추가함으로써, 새로운 라이브러리를 추가할 수 있다. 

라이브러리를 추가하는 것은 추후 다시 설명하도록 한다.


2. first 프로젝트 실행

이제 우리가 만든 first 프로젝트가 제대로 실행되는지 확인할 차례다.

1. Servers view에서 새로운 서버를 만든다.  

앞에서 톰캣이 제대로 설치되었는지 확인하기 위해서 만든 서버가 남아있다면 지우자. 

Servers 뷰에서 마우스 우클릭 > New > Server를 선택해도 된다. 


2. Tomcat 7.0을 선택하고, 서버 이름은 first로 바꾼다. 

만약 여러개의 프로젝트가 있을 경우, 하나의 프로젝트에는 하나의 서버만 할당되어야 한다. 즉, 여러개의 서버를 생성해야 할 경우, 같은 이름으로는 서버를 여러개 생성할 수도 없고, 어떤 서버가 어떤 프로젝트인지를 알 수 없기 때문에, 본인은 서버의 이름과 프로젝트의 이름을 동일하게 생성한다.


3. Next > 를 누르자.

이와 같은 화면이 나온다. 여기에서는 first라는 프로젝트 하나밖에 없기 때문에 상관없지만, 프로젝트가 여러개가 존재할 경우, 그 모든 프로젝트의 목록이 나온다. first를 더블클릭하거나 Add > 버튼을 눌러서 Configured 쪽으로 옮기고 Finish를 누른다.



4. 서버가 생성되었을테니, 서버를 실행시키자. 

1) 서버 선택후 Ctrl + Alt + R을 누르거나, 

2) 서버 우클릭 > Start를 선택하거나,

3) 녹색 동그라미안에 ▷가 있는 아이콘을 눌러서 서버를 실행시키자.


그러면 Console에 다음과같은 로그가 출력되면서 서버가 정상작동된 것을 확인할 수 있다.


5. 브라우저를 실행시키고, 주소창에 http://localhost:8080/first/ 를 입력한다.

first는 우리가 생성한 프로젝트의 이름으로, 만약 다른 이름으로 프로젝트를 생성하였다면, first 대신 작성한 프로젝트 명을 입력하면 된다.

그러면 다음과 같은 화면이 나온다.

이렇게 에러없이 화면이 나오면 문제없이 프로젝트의 생성 및 실행이 된것이다. 





이번 발코딩의 중점


스프링 프로젝트 생성시 초기에 생성되는 xml파일의 역할에 대해서 자세히 알기


1.pom.xml

프로젝트 내에서 <dependency>태그를 사용하여 라이브러리의 추가 및 삭제, 관리 를 설정할수 있는 xml 설정 파일


2.web.xml 

 서블릿 배포 기술자라고 했다. 영어로는 DD (Deploment Descriptor)라고 한다. web.xml은 WAS (Web Application Server)(여기서는 Tomcat)이 최초 구동될 때, WEB-INF 디렉토리에 존재하는 web.xml을 읽고, 그에 해당하는 웹 애플리케이션 설정을 구성한다. 다시 말해, 각종 설정을 위한 설정파일이라고 이야기 할 수 있다.


3.root-context.xml 

서블릿 관련 설정이다. 

View 지원을 제외한 bean 설정

ex) Service / Repository(DAO) / DB / log 등등


4.sevlet-context.xml

서블릿 관련 설정이다.

View 지원 bean 설정

ex) Controller


 우리가 여기서 주목해야하는 부분은 

<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<beans:property name="prefix" value="/WEB-INF/views/" />

<beans:property name="suffix" value=".jsp" />

</beans:bean>

↑ 이 부분이다.

Controller을 설명할 때, 서블릿 설정이 자동으로 prefix와 suffix를 붙인다고 해줬는데, 그 역할을 담당한다. 즉, 우리가 일일이 전체경로와 .jsp를 붙이지 않아도 되도록 도와준다.


그 다음은 <context:component-scan base-package="com.company.first" /> 이다.

이 부분은 스프링에서 사용하는 bean을 일일이 xml에 선언하지 않고도 필요한 것을 어노테이션(Annotation)을 자동으로 인식하게 하는 역할을 한다. 이는 나중에 다시 설명하도록 한다.

다른 카테고리의 글 목록

프레임워크/Spring 카테고리의 포스트를 톺아봅니다