ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [WEB:Spring] 스프링 시작하기 - 설치, 환경설정 셋팅
    비전공자 공부일기/:: WEB & Front-End 2019. 8. 29. 12:20

    2019. 08. 29

     

     

     

     

     

    스프링 다운로드 방법 1. 스프링 사이트에서 다운받기

     

    스프링의 메인 사이트 : https://spring.io/

     

    스프링 사이트에 들어가보면 한 가지가 아닌 다양한 기능들이 제공되고 있다.(** https://spring.io/projects 참고)

    그러나 일단 우리가 이용할 것은 Spring Framework 5.0 on JDK 8&9 로 해보겠다.

     

    스프링 홈페이지에 따로 다운로드 링크가 잘 안보이기 때문에, 직링을 타거나 원하는 기능 검색해야 하는데,

    'STS'를 검색하면 Downloads 버튼이 검색결과로 나온다. 클릭!

     

    하지만 나는 친절하므로 Spring Tool Suite(STS)를 다운받기 위한 직링 >> https://spring.io/tools3/sts/all/

     

     

     

    스프링 다운로드 방법 2. 이클립스에서 스프링 설치

     

    1) Eclpise > Help > Eclipse Marketplace > sts 검색

     

    2) 여러 검색결과가 나오는데, 이 중에서 Spring Tools 3 (Standalone Edition) 3.9.9.RELEASE를 선택하고 INSTALL!

     

    3) Confirm Select Features 창이 뜨면 모든 요소를 선택하고 Confirm을 누른다

     

    4) License 창이 뜨면 I accept the terms of the license agreements 클릭하고 Finish!

     

     

     

     

     

     

    새로운 스프링 프로젝트 만들기

     

    자, 이제 이클립스에서 스프링 프로젝트를 시작해 보자.

     

    먼저 이클립스의 Preference를 스프링 모드로 바꾸려면, 오른쪽 위 나뭇잎 모양을 클릭해준다.

     

    본격적으로 이클립스로 스프링을 사용하려면, 지금까지와 달리 스프링 프로젝트라는 것을 만들어줘야 한다. 그래야 library들을 사용할 수 있다. 추가적인 library들은 다운로드 받아 사용해야 한다.

     

    new > Spring Legacy Project > next > Spring MVC Project선택 & 이름 지정하고 next

    > 스프링을 처음 시작하면 Spring MVC Project requires a download of 16608 bytes. Proceed? 가 뜬다. 라이브러리 다운을 받겠다는 뜻이므로 Yes 클릭
    Please specify the top-level package e.g. com.mycompany.myapp*이 뜨면 site.itwill.controller 이런 형식으로 쓴다.  컨트롤러를 모델 역할로 봐서 영역을 만들어주기 위함인데, 만약 모델과 컨트롤러를 분리해서 생각하겠다 하면 프론트 컨트롤러라는 명칭을 쓸 수 있다.

     

    이제, 새로 생성된 스프링 프로젝트를 보면 아이콘에 M자와 S자가 있다.

    S는 당연히 Spring이고, MMaven메이븐 을 나타내는 이니셜이다.

    즉, 메이븐 기반으로 만들어진 스프링 프로젝트라는 뜻이다.

    기본적으로 스프링 프로젝트는 메이븐을 기반으로 한다.

     

     

     

    프로젝트를 열어보면 폴더 구조가 이전과 달라진 것을 알 수 있다.

    주요한 것만 보면

     

    src패키지/main/java  >>>  자바 소스
    src폴더/main/webapp >>> 웹에 관련된 자원들(jsp, css, js 등)
    src폴더/main/test  >>> 실제 코드를 올리기 전 테스트 해보고 싶을 때

     

    을 만들어 넣으면 된다.

     

    만약 프로젝트에 노란색 경고가 떨어졌다면,  JRE 버전이 안 맞는 1.6인 경우이다.

    스프링5는 jdk1.8이나 1.9 버전에서 사용할 수 있기 때문이다.

    프로젝트 이름 오른쪽 클릭 > Properties > Java Build Path 

    > JRE System Library 더블클릭 > Execution environment: 1.8이나 1.9로 설정

     



    이제 노란색 경고가 빨간색 에러로 바뀜ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

    왜냐면 라이브러리는 1.8로 바뀌었지만 컴파일러는 아직 다른 버전이라서이다.(내 경우엔 현재 1.6)

     

    프로젝트에서 오른쪽 버튼을 누르고 다시 Properties > 이번엔 Project Facets

    > Java의 Version을 보고 바꿈 > Dynamic Web Module 의 버전도 조정(3이상)

     

    ** 주의 ** 한 번 버전을 바꿔놓으면 상향조정은 되도, 다시 하향조정은 할 수 없다.

     

     

     

     

    스프링 4를 이용.

    (스프링 5는 클라우드)

     

     

     

    pom.xml 파일에서 스프링 사용환경 설정하기

     

     

    pom.xml이란?

    : Maven 프로그램을 이용하여 라이브러리를 저장소(Repository)로부터 다운로드 받아 빌드하기 위한 정보를 제공하는 파일

     

    ** 메이븐을 이용하면 이전처럼 WEB-INF>lib>cos.jar 또는 ojdbc6.jar 를 빌드시켜줄 필요가 없다.

    pom.xml 를 가지고 메이븐 레파지토리에서 라이브러리를 다운받아 빌드시켜줄 수 있기 때문이다.

     

     

    pom.xml 파일 구조 살펴보기

     

    1) 상단 기본정보

    <?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/maven-v4_0_0.xsd">
    
    
    	<modelVersion>4.0.0</modelVersion>
    	<groupId>site.itwill</groupId>
    	<artifactId>controller</artifactId>
    	<name>spring</name>
    	<packaging>war</packaging>
    	<version>1.0.0-BUILD-SNAPSHOT</version>

     

    간혹 xml 파일에 경고가 떨어지는 경우가 있는데,

     

     

    log4j.xml 파일은 다음 두 군데에 존재한다. 
    >> src/main/resources --> 메인에 관한 것 
    >> src/test/resources 

     

    2) 주요 엘리먼트들

    <properties>
      // 예를들어 아래 요소값을 1.8로 바꾸면
      <java-version>1.6</java-version>
      // 예를들어 아래 요소값을 5.1.9.RELEASE로 바꾸면 의존관계의 라이브러리들까지 자동으로 몽땅 바뀜
      // 나머지 버전들도 최신버전을 확인하고 바꾸면 자동으로 바뀌게 된다!
      <org.springframework-version>3.1.1.RELEASE</org.springframework-version>
      <org.aspectj-version>1.6.10</org.aspectj-version>
      <org.slf4j-version>1.6.6</org.slf4j-version>
    </properties>

    <properties> : pom.xml 파일에서 자주 사용되는 값(보통 버전)을 등록하기 위한 엘리먼트

    => 하위 엘리먼트에 등록된 값을 ${엘리먼트} 형식으로 표현할 수 있다.

    => 라이브러리에 대한 버전관리를 쉽게 하기 위해 사용

    -- <어쩌구-version> : 해당 라이브러리에 대한 버전표시

    -- => 숫자를 변경해주면 자동으로 그 버전으로 빌드됨!!!!!!!

    -- ** 파일명 뒤에 -aplha 또는 -beta 라고 되어있는 건 테스트버전이기 때문에 왠만하면 다운받지 말자!

     

    <dependencies>
      <!-- Spring -->
      <dependency>
        <groupId>org.springframework</groupId> // org.springframework 라는 폴더 아래
        <artifactId>spring-context</artifactId> // spring-context 파일이 있다는 구조
        <version>${org.springframework-version}</version>
        <exclusions>
        <!-- Exclude Commons Logging in favor of SLF4j -->
        <exclusion>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        </exclusion>
        </exclusions>
      </dependency>
    </dependencies>
        
        <!-- 이 외에도 물론 많은 depency가 필요하지만 여기선 생략 -->

     

    <dependencies> :  프로젝트에 필요한 라이브러리를 다운로드 받아 빌드 설정하기 위한 최상위 엘리먼트

    -- <dependency> : 라이브러리 파일을 빌드 설정하기 위한 상위 엘리먼트

    -- ** http://mvnrepository.com 사이트 참조

    -- => 의존관계 라이브러리 파일 중 제외 라이브러리도 함께 다운로드 됨

    ---- <grouopId> : 라이브러리 그룹을 설정하기 위한 엘리먼트

    ---- <artifactId> : 라이브러리 이름을 설정하기 위한 엘리먼트

    ---- <version>라이브러리 버전을 설정하기 위한 엘리먼트

    ---- <exclusions> : 의존 관계 라이브러리 파일 중 제외 라이브러리에 대한 정보를 제공하기 위한 엘리먼트

    ---- ** 의존관계란? : A 라이브러리를 사용하려고 할 때 그 안에서 다시 B라이브러리를 필요로 할 때 의존관계라고 한다.

     

     

    ** pom.xml >> 계정 디렉토리의 .m2 폴더(보통 c:\Users\user\.m2 )에 라이브러리 파일을 다운로드하여 빌드된다.

    ** 만약 라이브러리가 다운로드 되던 도중에 끊기는 경우, 다시 다운로드를 받아야 하는데 문제는 이미 .m2 폴더에 파일이 존재하므로 버전 업그레이드가 되지 않는이상 새로 다운로드되지 않는다. 그래서 파일을 삭제해준 뒤 다시 다운받아야 함. 삭제는 이클립스를 닫고 삭제하고, 그 뒤에 이클립스를 실행하면 자동으로 열심히 다운로드 받음

     

     

     

    pom.xml 파일에 기본적으로 들어가 있는 라이브러리 외에 다운받고 싶은 게 있다면,

    mvnrepository.com 사이트에서 필요한 라이브러리르 검색하면 pom.xml에 복사해서 붙여넣기 할 수 있도록 코드 형태로 제공되는 것을 볼 수 있다.

    <!-- http://mvnrepository.com/artifact/cerces/cercesImple -->
    <!-- => 로그 프로그램(log4j)에 문제가 발생할 경우 문제를 해결하기 위한 기능을 제공하는 라이브러리 -->
    <dependency>
      <groupId>xerces</groupId>
      <artifactId>xercesImpl</artifactId>
      <version>2.12.0</version>
    </dependency> 

     

     

    라이브러리들이 모두 잘 빌드됐는지 확인하기 위해, 

    http://localhost:8000/controller/

    를 실행해보아야 한다. Hello World! 하면서 현재 날짜시간이 나오면 성공.


    패키지를 만들면 패키지의 마지막 .name 부분이 이름으로 되는데 컨텍스트 이름도 자동으로 이이름으로 된다. 이걸 바꿔주어야 한다.

    ==>서버 콘솔에서 서버(톰캣을 이용하는 경우 Tomcat v9.0 Server at localhost 라고 되어잇는 부분) 더블클릭

    > Modules 탭 클릭 > /controller 라고 된 부분을 /spring으로 바꾸기



    (** 한글 깨짐 문제)
    src 폴더 > main > webapp > WEB-INF > views > home.jsp 부분에
    <%@ page session="false"%> 
    ==> <%@ page session="false" contentType="text/html; charset=UTF-8"%> 로 변경할 것

     

     

     

    참고 블로그 : https://blog.naver.com/jydev/220835111092

    댓글

coding wanee