Spring Framework 환경설정
설치 (Jar파일들 download)
스프링에서 필요로 하는 jar파일들을 다운로드해서 가지고 있어야 하는데, 이 방법이 여러가지다. 수동 설치와 maven 이나 gradle을 이용한 설치가 있고, 이클립스에서 메이븐 프로젝트로 만들어서 설치도 가능하다.
Spring은 스프링 자체 모듈(jar)뿐만 아니라 이 들이 사용하는 외부 라이브러리도 필요하다.
maven을 이용한 설치
maven을 별도로 설치해서 maven으로 하여금 Spring에 필요한 jar를 다운받게 하는 방법이다.
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
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~을 적절히 섞어 놓았다.
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를 직접 설치할때는 TC Server와 Spring Roo는 빼고 설치한다.
플러그인 설치할때는 core-spring IDE 만 설치하면된다.(확인필요))
Project 생성 방법
스프링 프로젝트를 생성할때 선택할 수 있는 프로젝트 유형이 여러가지 있는데, 각각에 대해서 살펴본다.
Simple Java
- 생성 :
new project > spring project > template:Simple Java
- 생성 한 뒤 프로젝트 우 클릭 > configure > convert to Maven
- 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 프로젝트로 만들기 위한 방법이다.
- Dynamic Web project를 생성하고 web.xml을 작성한다.
이 파일의 기본 형식은 아래의 URL 문서를 참조하거나 앞서 언급한 Spring MVC Project방식을 통해 만들어진 파일을 참조해도 된다.
<?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
- 컨트롤러 클래스를 작성
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";
}
}
<%@ 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