[2일차]Spring 환경설정

2015. 7. 21. 09:49Rapa 수업/Spring

반응형

Spring Framework 환경설정

설치 (Jar파일들 download)

스프링에서 필요로 하는 jar파일들을 다운로드해서 가지고 있어야 하는데, 이 방법이 여러가지다. 수동 설치와 maven 이나 gradle을 이용한 설치가 있고, 이클립스에서 메이븐 프로젝트로 만들어서 설치도 가능하다.
Spring은 스프링 자체 모듈(jar)뿐만 아니라 이 들이 사용하는 외부 라이브러리도 필요하다.

수동설치

수동 설치는 공식적인 링크가 사라졌고 maven repository에서 웹으로 받으면 된다.

http://maven.springframework.org/release/org/springframework/spring/

그런데 스프링 모듈은 다운로드 받을 수 있는데, 모듈에서 사용하는 필수 라이브러리는 없다.
그중 반드시 있어야 하는 apache commons는 별도로 받아야 한다.

http://commons.apache.org/proper/commons-logging/download_logging.cgi

소스코드는 github사이트에서 받을 수 있다.

https://github.com/spring-projects/spring-framework

메이븐을 설치하지 않고 받을 수 있도록 제공하는 웹사이트가 있는데, 이곳에서 모듈 이름으로 검색해서 하나씩 따로 따로 받아도 된다.

http://mvnrepository.com/

메이븐 중앙 레포지터리에서도 검색해서 받을 수는 있지만 검색이 그다지 좋지 않다.

http://search.maven.org/#search|ga|1|

maven을 이용한 설치

maven을 별도로 설치해서 maven으로 하여금 Spring에 필요한 jar를 다운받게 하는 방법이다.

1. maven 설치

  • http://maven.apache.org
  • 압축해제후 환경변수 셋팅
  • M2_HOME(maven 압축 해제한 경로), PATH 등록
  • JAVA_HOME 도 반드시 설정되어 있어야 한다.

2. 스프링 다운로드 받을 폴더 생성(예:spring)

3. pom.xml 생성

아래와 같이 pom.xml을 위의 디렉토리에 생성한다.

<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>spring-source-download</groupId>
  <artifactId>SpringDependencies</artifactId>
  <version>1.0</version>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>3.2.4.RELEASE</version>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
            <version>2.8</version>
            <executions>
              <execution>
                <id>download-dependencies</id>
                  <phase>generate-resources</phase>
                    <goals>
                      <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                      <outputDirectory> ${project.build.directory}/dependencies </outputDirectory>
                    </configuration>
              </execution>
            </executions>
      </plugin>
    </plugins>
  </build>
</project>

3. 설치 명령 실행

$>mvn install


4. 결과 확인

target/dependencies 디렉토리 에서 jar 파일 존재 하는지 확인한다.

Java Project에서 Spring 사용하기

순수 자바프로젝트에서 앞서 설치한 스프링 라이브러리를 이용해서 HelloWorld를 하는 방법을 알아본다.

1. project 생성

eclipse 에서 java project를 생성(ex: plainJava)한다.

2. BuildPath 설정

생성한 프로젝트에 libs 디렉토리를 만들어서 앞서 설치한 라이브러리 중에 아래의 필수 라이브러리를 추가하고 build_path에 추가

  • com.springsource.org.apache.commons.logging-xxx.jar
  • org.springframework.beans-xxx.jar
  • org.springframework.context-xxx.jar
  • org.springframework.core-xxx.jar
  • org.springframework.expression-xxx.jar

3. Java 코드 작성

Main.java

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
public class Main {
    public static void main(String[] args) {
        ApplicationContext context = new GenericXmlApplicationContext("applicationContext.xml");
        MyService svc = context.getBean("helloSvc", MyService.class);
        String msg = svc.getMsg();
        System.out.println(msg);
    }
}

위의 코드 중에 나타나는 Application Context의 종류는 많다. 그 중에 대표적으로 많이 사용하는 것은 아래와 같다.

  • ClassPathXmlApplicationContext
    ClassPath를 기준으로 config파일을 읽어 온다. classpath*:appContext.xml과 같은 형식으로 와일드 카드 사용이 가능하다. 여러개의 jar파일 안에 있는 confg파일을 읽어 올때 유용하다.
  • FileSystemXmlApplicationContext
    config 파일을 파일시스템의 지정한 경로로 부터 읽어 온다.
    c:/temp/spring/config/config.xml 과 같이 절대경로로 상용할 수 도 있으며, 프로젝트 root를 기준으로 상대경로로 접근도 가능하다.
    특히, config/**/*.xml 과 같은 형식으로 와일드카드를 사용해서 여러개의 config 파일을 읽어 올 수 도 있다. 이경우, 확장자까지 생략하는 것은 안된다.
  • GenericXmlApplicationContext
    ClassPath~와 FileSystem~을 적절히 섞어 놓았다.

MyService.java

public class MyService {
    private String msg = "Hello Spring!!";

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}

4. config 파일 작성

applicationContext.xml을 java 파일과 같은 디렉토리에 작성한다.
note
기본 형식은 아래의 URL에서 참조 할 수 있다.

STS 또는 플러그인을 설치했다면 메뉴을 통해서도 생성할 수 있다.

  • projec > 우클릭 > new > Spring Bean Configuration
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean name="helloSvc" class="MyService"></bean>
</beans>

Spring Tool(STS) 설치 및 사용

이클립스 기반의 STS all-in-one 배포판을 설치하는 방법이 있고, 원래 사용하던 Eclipse for JavaEE가 있다면 여기에 STS 플러그인만 추가로 설치하는 방법이 있다.

  • STS 다운로드 URL : http://spring.io/tools/sts/all
    all-in-one 배포 링크 아래 쪽에 update-site와 ahrchive 를 받을 수 있는 링크가 있다.

STS를 직접 설치할때는 TC Server와 Spring Roo는 빼고 설치한다.
플러그인 설치할때는 core-spring IDE 만 설치하면된다.(확인필요))

Project 생성 방법

스프링 프로젝트를 생성할때 선택할 수 있는 프로젝트 유형이 여러가지 있는데, 각각에 대해서 살펴본다.

Simple Java

  1. 생성 : new project > spring project > template:Simple Java
  2. 생성 한 뒤 프로젝트 우 클릭 > configure > convert to Maven
  3. pom.xml > dependencies > add > spring context 로 검색
    만약 Index download disabled 라고 뜨면서 검색이 안되면
    preference > Maven > Dowload repository index updates on startup 체크 하고 다시 껐다가 켜면 된다.
    maven repository view에서 Global Repositories에서 우클릭 > Full index enabled 하고 rebuild Index를 해줘야 한다.

Simple Spring Maven

new project > spring prject . template:Simple Spring Maven
이렇게 설치하면 pom.xml과 dependecies가 이미 채워져 있어서 좋다.
하지만, src 의 구조가 아주 어색하게 만들어져서 Simple Java형식을 더 선호한다.

Spring MVC Prject

new project > spring project > Spring MVC Project
WEB-INF와 기본적인 jsp 등의 구조 까지 만들어 준다.

Dynamic Web Project를 Spring MVC 로 변환하기

일반적인 Dynamic Web Project를 Spring MVC 프로젝트로 만들기 위한 방법이다.

    <?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 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/root-context.xml</param-value>
    </context-param>
    <!-- Creates the Spring Container shared by all Servlets and Filters -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <!-- 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>/WEB-INF/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-config.xml을 작성한다.
    앞서 작성한 web.xml에서 지정한 경로에 servlet-config.xml파일을 작성한다.
    이 파일도 앞서 언급한 Spring MVC 방식의 파일을 복사해서 사용한다.
        <?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:beans="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    <!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
    <!-- Enables the Spring MVC @Controller programming model -->
    <annotation-driven />
    <!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
    <resources mapping="/resources/**" location="/resources/" />
    <!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
    <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>
    <context:component-scan base-package="net.xcoda.spring" />
</beans:beans>
  • Maven 프로젝트로 변경
    • configure > convert to Manven
  • pom.xml 작성
    추가할 dependency는 3가지 이다.
    • spring context
    • spring web-mvc
    • jstl
  • 컨트롤러 클래스를 작성
    • HomeController.java
package net.xcoda.spring;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class HomeController {
        Date date = new Date();
        DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
        String formattedDate = dateFormat.format(date);
        model.addAttribute("serverTime", formattedDate );
        return "home";
    }
}
  • JSP 파일 작성
    • WEB-INF/view/home.jsp
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"  %>
<%@ page session="false" pageEncoding="utf-8"%>
<html>
<head>
    <title>Home</title>
</head>
<body>
<h1>
    Hello world!  
</h1>
<P>  The time on the server is ${serverTime}. </P>
</body>
</html>
  • 필요에 따라 스프링 네이처 추가
    프로젝트 우클릭 > Spring Tools > add spring project nature
  • 프로젝트 실행
    프로젝트를 실행하거나 브라우져 주소창에 프로젝트 context-home으로 요청을 해서 결과 화면을 확인한다.
출처 : https://sites.google.com/site/jaenspring/spring-configuration


반응형