Woopii Vyeolog

Spring Legacy Project 생성,시작하기(MVC모델) 본문

Spring Framework

Spring Legacy Project 생성,시작하기(MVC모델)

WooPii 2020. 3. 17. 12:12

여기서 다룰 부분은 Spring Legacy Project의 MVC모델 템플릿을 가져다 사용하는 것이다. 

 

Legacy System 이란??

낡은, 유산이란 사전적인 의미가 있지만, Legacy system이라는 것은 현장에서는 낡아서 버릴게 아니라 이미 이전부터 사용된 손 델 필요가 없거나 손데기 싫은 주 시스템 (core, bases)를 의미한다.

STS4 버전 이후부터는 'Spring Boot'가 기본이고, 'Spring Legacy Project' STS3까지 지원 했기 때문에

Spring Legacy Project로 프로젝트를 생성하기 위해선 STS3 버전을 쓰던가 아님 STS4에서 Spring Legacy Project 탬플릿을 사용할 수 있게 해주는 Plug-in을 설치해야 한다. 

 

 

Plug-in 설치

1. 상단 메뉴에서 Help → Check for update 로 먼저 업데이트 실행

 

2. Help → Eclipse Marketplace → sts 검색 → Spring3 Tools Add on for Spring Tools4 설치

(설치 중이면 STS 우측하단에 조그맣게 설치 진행중 막대가 나온다 그것을 확인하고 설치 끝나기 전에 종료하지 말자)

 

 

 

 

 

3. 재부팅 문구가 나오면 재부팅 해주면 설치가 끝난다.

 

 

Spring Legacy Project 생성

 

1.  File → New Spring Lagacy Project 

2. 프로젝트 이름 작성 template은 Spring MVC Project 로 한다.  

3. 패키지명 작성

 

패키지명 작성 규칙

패키지명은 보통 회사 도메인 주소의 역순에 프로그램명을 붙인다.

1. com.회사이름.(플렛폼).프로그램명
2. kr.co.회사이름.(플렛폼).프로그램명

예 : com.google.test_project

 

 

이렇게 하면 프로젝트가 생성이 되고, 프로젝트를 시작하면 다음과 같은 화면이 나온다. 

 

 

여기까지 했으면 일단 개발 환경은 구축한 것이다.

 

여기서 몇가지 설정을 해준다.

 

 

Spring Legacy Project 설정

 

 

<pom.xml> -- 버전 수정

<?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">
	
    <!--POM model의 버전-->
    <modelVersion>4.0.0</modelVersion>
	
    <!--프로젝트를 생성하는 조직의 고유 아이디를 결정한다. 일반적으로 도메인의 이름을 거꾸로 적는다.-->
    <groupId>kopo.exam</groupId>
    
	<!-- 프로젝트 빌드 시 파일의 대표이름이다. groupId내에서 유일해야 한다. 
    Maven을 이용하여 빌드 시 다음과 같은 파일이 생성된다. -->
    <artifactId>hello</artifactId>
    
    <!--프로젝트 이름-->
	<name>hello</name>
    
    <!--패키징 유형(jar, war, ear 등)-->
	<packaging>war</packaging>
    
    <!--프로젝트의 현재 버전, 프로젝트 개발 중일 때는 SNAPSHOT을 접미사로 사용-->
	<version>1.0.0-BUILD-SNAPSHOT</version>
    
    <!-- 버전관리시 용이 하다. ex) properties에서 자바 버전을 선언 하고 dependencies에서 
    다음과 같이 활용 가능 하다. <version>${java.version}</version>  -->
	<properties>
		<java-version>1.8</java-version>
		<org.springframework-version>5.0.7.RELEASE</org.springframework-version>
		<org.aspectj-version>1.6.10</org.aspectj-version>
		<org.slf4j-version>1.6.6</org.slf4j-version>
	</properties>
    
    <!--dependencies태그 안에는 프로젝트와 의존 관계에 있는 라이브러리들을 관리 한다.-->
	<dependencies>
		<!-- Spring -->
		<dependency>
		    <groupId>org.apache.maven.plugins</groupId>
		    <artifactId>maven-resources-plugin</artifactId>
		    <version>2.4.3</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<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>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${org.springframework-version}</version>
		</dependency>
				
		<!-- AspectJ -->
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjrt</artifactId>
			<version>${org.aspectj-version}</version>
		</dependency>	
		
		<!-- Logging -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>${org.slf4j-version}</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>jcl-over-slf4j</artifactId>
			<version>${org.slf4j-version}</version>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>${org.slf4j-version}</version>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.15</version>
			<exclusions>
				<exclusion>
					<groupId>javax.mail</groupId>
					<artifactId>mail</artifactId>
				</exclusion>
				<exclusion>
					<groupId>javax.jms</groupId>
					<artifactId>jms</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.sun.jdmk</groupId>
					<artifactId>jmxtools</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.sun.jmx</groupId>
					<artifactId>jmxri</artifactId>
				</exclusion>
			</exclusions>
			<scope>runtime</scope>
		</dependency>

		<!-- @Inject -->
		<dependency>
			<groupId>javax.inject</groupId>
			<artifactId>javax.inject</artifactId>
			<version>1</version>
		</dependency>
				
		<!-- Servlet -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.1.0</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet.jsp</groupId>
			<artifactId>jsp-api</artifactId>
			<version>2.1</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>
	
		<!-- Test -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.7</version>
			<scope>test</scope>
		</dependency>        
	</dependencies>
    
    <!--빌드에 사용할 플러그인 목록-->
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-eclipse-plugin</artifactId>
                <version>2.9</version>
                <configuration>
                    <additionalProjectnatures>
                        <projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>
                    </additionalProjectnatures>
                    <additionalBuildcommands>
                        <buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand>
                    </additionalBuildcommands>
                    <downloadSources>true</downloadSources>
                    <downloadJavadocs>true</downloadJavadocs>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.5.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <compilerArgument>-Xlint:all</compilerArgument>
                    <showWarnings>true</showWarnings>
                    <showDeprecation>true</showDeprecation>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.2.1</version>
                <configuration>
                    <mainClass>org.test.int1.Main</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

 

 

<web.xml> -- 한글 인코딩

 

<?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 https://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

	<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
    <!-- 여기에 등록된 설정 파일에 따라 등록된 Bean들은 모두 공유가 가능하다. -->
    <!-- root-context.xml을 정의 -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/spring/root-context.xml</param-value>
	</context-param>
	
    <!-- ContextLoaderListener --> 
    <!-- 리스너로써 root-context.xml에 정의 되어있는 것들을 모든 서블릿과 필터가 공유할 수 있게 해준다고 함. -->
    <!-- Controller가 공유하는 Bean들을 포함하는 Spring Container를 생성한다 -->
    <!-- 공유하는 Bean: Dao, DataSource, Service --> 
    <!-- DispatcherServlet에 의해 생성된 Bean은 ContextLoaderListener에 의해 
    생성된 Bean을 참조할 수 있다.--> 
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

    <!-- Processes application requests -->
    <!-- DisparcherServlet -->
    <!-- 1. Spring Container를 생성한다. (Spring Container: Controller의 lifecycle 관리) -->
    <!-- 2. 클라이언트의 요청을 처음으로 받는 클래스 (Spring에서 제공) -->
    <!-- 3. 클라이언트의 요청을 Handler(Controller)에 보낸다. -->
	<servlet>
		<servlet-name>appServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- contextLoader가 해당 위치의 설정 파일을 읽어, 해당 파일을 dispatcher servlet으로 만든다. -->
        <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>
    
	<!-- /로 시작하는(/뒤에 공백) url 요청을 받아 appServlet에서 처리한다. -->
	<servlet-mapping>
		<servlet-name>appServlet</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>
	
	<!-- 한글처리 : 인코딩을 UTF-8로 설정하여 필터링하겠다는 설정이다. -->
    <filter> 
        <filter-name>encodingFilter</filter-name> 
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
        <init-param> 
           <param-name>encoding</param-name> 
           <param-value>UTF-8</param-value> 
        </init-param> 
        <init-param> 
           <param-name>forceEncoding</param-name> 
           <param-value>true</param-value> 
        </init-param> 
     </filter> 
     <filter-mapping> 
        <filter-name>encodingFilter</filter-name> 
        <url-pattern>/*</url-pattern> 
     </filter-mapping>
     
</web-app>

 

 

 

 

Comments