ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 스프링(Spring) 개발 - (4) 스프링 프로젝트 생성하기
    Spring 2014.07.06 14:12
    지난글까지는 스프링을 개발하는데 필요한 개발환경을 설치하였습니다. 

    이번글부터는 스프링 프로젝트를 생성하고, 스프링의 기능을 하나씩 추가해서 하나의 프로젝트를 완성하는것을 목표로 합니다.


    간단히 스프링 프레임워크를 살펴보겠습니다. 

    1. 스프링은 POJO (Plain Old Java Object) 방식의 프레임워크로서, 일반적인 J2EE 프레임워크에 비해 특정 라이브러리를 사용할 필요가 없어서 개발이 쉬우며, 기존 라이브러리의 지원이 용이합니다.


    2. 스프링은 관점지향프로그래밍, AOP(Aspect Oriented Programming)를 지원합니다. 트랜잭션, 로깅, 보안 등 여러 모듈, 여러 계층에서 적용되는데, 이런 코드들을 실제 비지니스 로직과 분리할 수 있도록 도와줍니다. 한때, AOP가 OOP(Object Oriented Programming)를 대체하는 기술로 생각되기도 했지만, 실제로 AOP는 OOP를 더욱 OOP스럽게 보완해 주는 기술입니다.


    3. 스프링은 의존성 주입, DI (Dependency Injection)를 지원합니다. 이는 객체간의 의존관계를 관리하는 기술이라고 생각하면 됩니다. 어떤 객체가 필요로 하는 객체를 자기 자신이 직접 생성하는것이 아니라, 외부에 있는 다른곳에서 자신이 필요로 하는 객체를 주입받는것을 말합니다.


    4. 스프링은 제어 반전, IoC (Inversion of Controller)를 지원합니다. 컨트롤의 제어권이 개발자가 아니라 프레임워크에 있음을 말합니다. 즉, 객체의 생성부터 모든 생명주기의 관리까지 객체의 제어권이 바뀐것을 의미합니다.


    스프링의 가장 큰 특징은 AOP, POJO, DI, PSA (Portable Service Abstraction) 를 꼽을 수 있습니다. 이에 대한 자세한 설명은 지금 여기서 이야기해도 쉽게 이해하기가 힘들고, 실제 프로젝트를 진행하면서 경험을 해봐야 "이게 무엇이구나~" 라고 이해하기 쉽습니다. 위에 나온 개념들이 실제 프로젝트에서는 어떻게 적용될 수 있는지도 추후 하나씩 설명하도록 하겠습니다.

    ----------------------------------------------------------------------------------------------------


    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 대신 작성한 프로젝트 명을 입력하면 된다.

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


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


    P.S Hello World!는 만국공통어인가보다...-0-;


    다음글에서는 이 프로젝트를 간단히 살펴보고, 앞으로 어떤식으로 진행할지에 대한 이야기를 한다.

    댓글 51

    • 이전 댓글 더보기
    • Kurt 2016.01.14 10:13

      안녕하세요.
      감사히 잘 보고 있습니다.
      현재 이클립스 초보입니다.
      기본 프로젝트 생성 후 크롬에서 개발 링크를 입력하면 되는데 익스플로어에서는 HTTP Status 404에러가 뜨는데 이유가 뭘까요?? 그리고 Warning 정보에 Build path specifies execution environment JavaSE-1.6라는 문구가 뜨는데 이건 어떻게 없애야 할까요~~

      • Favicon of https://addio3305.tistory.com BlogIcon 카루시에라 2016.01.15 11:07 신고

        익스에서 안되는건 저도 잘 모르겠네요. 원래 브라우저 상관없이 정확히 동작하거든요.
        그리고 warning은 Build path를 설정해주시면 됩니다.
        프로젝트 우클릭 -> Properties -> Java Compiler에서 JDK Compliance를 변경하세요.

    • Favicon of http://myeonguni.tistory.com BlogIcon myeonguni 2016.01.15 18:01

      항상 감사드립니다. 저도 위 분과 같이 프로젝트 생성직후 pom.xml에서 오류가 잡혀서
      plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-compiler:2.5.1:compile (execution: default-compile, phase: compile) 에러 내용입니다 ㅠ

    • Song 2016.01.22 19:05

      org/springgramework/context 에 NoClassDefFoundError가 나는데 이유가 뭘까요? 디펜던시 확인해보면 제대로 추가가 되어 있는데 에러가 나는 이유를 모르겠습니다

    • 네옹 2016.01.25 10:00

      궁금한데요....알려주심 감사하겠습니다~~~
      처음에 프로젝트를 생성하고 실행하면 HomeController.java
      요 자바 파일이 실행되더라고요...
      이런 이유는 무언가요?
      요 메이븐+스프링에서 HomeController.java 가 실행되는 이유가 무쟈게 궁금합니다.

    • 하.... 2016.03.06 10:53

      구축하면서 만났던... 상황들 여기 적어드릴께요..
      1. 프로젝트 에러 뜨면은 프로젝트 우클릭 -> Maven -> Update Project (딴분들이 적어놓으셨네요)
      2. WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI
      -> 프로젝트 -> 우클릭 -> properties -> web project settings -> context root 를 '/' 로 바꾸세요

      • anonymous 2016.03.31 13:10

        하님의 2번 방법대로 해서 오류가 해결되었네요 감사합니다.

      • pass 2016.04.17 14:17

        하... 님의 방법에서 2번 먼저 하고 1번을 실행하니 에러가 사라졌네요. 감사합니다 :)

    • Favicon of https://croae.tistory.com BlogIcon 총알탄대대장 2016.05.12 14:36 신고

      이클립스가 버전이 업뎃되면서 몇몇군데는 바뀌었네요
      본문상 1.1 Maven Dependencies 에서 maven 과JRE 관련 디펜던시가 안나와서 이클립스 다 지워보고
      다시 설치하고 했는데도
      안나오길래 다시한번 보니깐 프로젝트 트리 안에 Java Resources 안에 Libraries 안에 들어가 있었네요..
      현재 제 이클립스는 Eclipse Java EE Mars.2 (4.5.2) 버전 입니다

      • Favicon of http://nothing.com BlogIcon 역공학 2016.05.18 00:35

        저도 없어서 한참 찾았는데 거기에 있었군요!!
        덕분에 시간 절약했습니다!! 감사합니다

    • Favicon of http://blog.naver.com/rjf852 BlogIcon 짱예쁨 2016.06.07 15:14

      서버 실행하니까 Server Tomcat v8.0 Server at home failed to start.
      이라고 하는데...다이나믹프로젝트 만들어서 jsp 실행시키면 실행이 되는데 스프링 프로젝트는 서버오류가 나요 ㅜㅜㅜ

    • 404Error 2016.07.29 11:25

      스프링 프로젝트 실행 결과 HTTP Status 404 나시는 분은 해당 서버의 server.xml에서 context path="" 내의 값으로 접속하셔야 합니다. 이 값은 참고적으로 프로젝트 만들때 패키지 설정하는데의 마지막 id값으로 들어가는것 같습니다. 예를 들면 com.tistory.addio3305 라고 패키지를 만들면 path의 값은 addio3305 로 인식하는것 같습니다.

    • Favicon of https://6495ed.tistory.com BlogIcon 레모네스 2016.08.15 22:47 신고

      감사합니다! 많은 도움이 되었습니다.

    • Seol 2016.08.31 18:02

      똑같이 따라하면서 설치했는데 Spring project를 누르면 persistence 폴더가 없고 그래서 MVC project를 선택할 수가 없는데 어떻게 해야되나요?

    • 수정 2016.10.26 17:23

      프로젝트 생성할 때 저는 다이나믹 프로젝트로 생성했는데 이럼 디렉토리 구조가 틀려져서..ㅠㅠ 상관없는건가요? 폴더 구조 부터 헤매고있네요

    • 김승하 2016.11.17 20:36

      sprin project에는 mvc가없어서 spring legacy project mvc 로 만들었는데 만들고 나니 자바 모든 파일에 import org.springframework.boot 등 스프링이라고 써있는것들에 모두 오류가 나네요.. 이클립스 버전은 네온이구요, jdk는 1.8입니다.

    • 웅헹헹 2016.11.27 10:33

      저도 이클립스 네온으로 메이븐 첨부터 포함된 채로 다운받아서
      고생했었습니다...404에러가 떠서 난리난리를 쳤는데요 ㅠ
      context path="" 여기... 이것도 없어요 근데 context 로만 검색해서 나오는 경로로
      브라우저에 입력하니 바로 뜨더라구요 헬로월드... 하하하.

      https://localhost:8080/first/ 이걸로만 실행 해보세요

    • 뒹구르르 2017.01.20 13:00

      정주행 다시 하러 왔습니다. 감사합니다~!

    • ThankU 2017.02.01 17:29

      감사해요 이보다 더 자세하게 알려줄 순 없을듯 계속 잘볼게요^^♡♡♡♡

    • 싱이 2017.04.27 13:18

      HTTP Status 404 - /first/
      type Status report
      message /first/
      description The requested resource is not available.
      Apache Tomcat/7.0.59

      서버를 실행하고 웹상에 http://localhost:8080/first/ 실행하니까 저런 메시지가 뜨는데,, 지금까지 쭉 잘 따라 가다가 저기서 막히네요.. 머가 문제일까요 ㅜ_ㅜ

    • 푸르미 2017.05.04 17:19

      이클립스 네온3
      톰캣 9.0

      위 댓글 대표적인 에러 두개 다 걸렸는데요.
      Build path specifies execution environment JavaSE-1.6 ~로 시작되는 경고는
      여기 본문에 설명되는거보다 높은 사양을 깔았는데 아마두 버전따라 바뀐거 같슴. 이건 그냥 톰캣 설정할때 jdk말구 jre로 잡아주니깐 바로 되네요.

      pom.xml관련 에러는 라이브러리가 잘못깔리거나 네트워크 에러임. 이클립스 종료하고 C:\Devs\maven\repository 싹다 지워주시고 프로젝트 우클릭 메이븐 인스톨 그리고 다시 우클릭 메이븐에 프로젝트 업데이트 해주시면 됩니다.

    • 나그네 2017.10.03 03:39

      tomcat 서버이름에 camel 형태로 대소문자를 혼용해서 넣더라도 주소창에 반드시 소문자만 넣어줘야 접속이 가능하네요.

    • 2018.05.25 09:44

      스프링mvc 프로젝트가 없는경우는 어떻게 되게할수 있나요??

    • 이썬 2019.03.21 13:39

      글쓴이님이 설정하라는 대로 했는데 url 접속시 http404 에러가 발생되면 패드문제일 확률이 높은거 같아요. 만약에 server.xml에 path가 "/" 하나로만 설정해 놓았으면 url주소에 http://localhost:8081 만 입력해서 접속해보심 됨. 물론 숫자 4자리는 본인이 설정한 포트번호 입력해야함.

      스프링 프로젝트 현업하는 초보인데 이블로그가 정말 행운이네요 공부 쏙쏙됨. 책보다 강력한 무언가가 다가옴ㅋㅋㅋ
      이런글 공유해주셔서 너무 감사합니다ㅠㅠ 몇번이고 정주행해서 내것으로 만들때까지 들락랄락 해야쥐

Designed by Tistory.