Day84 - [Spring]개발환경 구축(Spring 프로젝트 생성)

2021. 6. 15. 22:44Spring

이번에는 Spring 프로젝트를 생성해보면서, 개발환경을 구축 해봅시다.

 

개발환경 구축(Spring 프로젝트 생성)

먼저, JAVA / Eclipse / Tomcat 에 대한 환결 설정을 모두 마쳐야 합니다.

 

제 개발 환경은 , JAVA 1.8 / Eclipse / Tomcat 9.0 을 사용하고 있습니다.

 

먼저, 이클립스 를 켜고 상단의 "Help" -> "Eclipse Marketplace" 를 클릭 해주세요.

"sts" 를 검색하면, "Spring Tools 3 (Standalone Edition) 3.9.14.RELEASE" 가 나오는데, Install 을 눌러주세요

※ 저는 이미 install 이 되어 있는 상태 입니다.

"Install" 을 누르면 아래처럼 창이 나타나는데 전부 선택 (선택되어 있음) 하고 "Continue" 를 누릅니다.

"Continue" 를 누르면 다소 시간이 소요 된 후에, 아래의 창이 나타납니다. "Finish" 를 누르고 이클립스를 다시 시작해주세요

이클립스를 다시 켜는데 시간이 좀 걸립니다 ( 갑자기 이클립스가 안 켜진다고 생각하실 수도 .... )

 

이클립스가 다시 켜지면, 우측 상단에 있는 "Open Perspective" 를 누르고 "Spring" 을 추가합니다.

그러면 우측 상단 "Open Perspective" 옆에 "Spring" 이 생기는데 클릭 해주세요.

여기까지 완료가 되었으면, 이제 Spring Project 를 생성할 수 있게 되었습니다.

 

그 중에, 저희는 "Spring Legacy Project" 를 생성합니다. ( MVC 구조 자동생성 )

"Project name" , "Location 설정", "Spring MVC Project" 를 누르고 "Next" 버튼을 누릅니다.

최상위에 존재할 패키지 를 정하라는 것인데, 일반적으로 "회사이름.프로젝트.컨트롤러" 로 합니다.

그러면 아래와 같이 프로젝트가 생성이 되었을텐데요, 이제 여기서 내 환경에 맞게 몇가지를 셋팅 해주어야 합니다.

JAVA 버전 Spring 버전 등등

먼저, "pom.xml" 에 들어가서, "java-version" 등을 수정 합니다. 

<?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>com.simple</groupId>
	<artifactId>test</artifactId><!-- 컨텍스트 패스 -->
	<name>SpringTest</name><!-- 프로젝트명 -->
	<packaging>war</packaging>
	<version>1.0.0-BUILD-SNAPSHOT</version>
	
	<!-- 1. 자바 버전을 1.8버전 변경, 스프링 버전을 5.0.7버전으로 변경 -->
	<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>
		<!-- Spring -->
		<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>
				
		<!-- 2.자바 서블릿 버전을 3.1이상으로 변경 artifacid를 javax.servlet-api변경 -->
		<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>
	
		<!-- 3. junit버전을 4.12로 변경 -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>        
	</dependencies>
	
	<!-- 4. 메이븐 관련된 버전. 메이븐 버전을 3.8.1으로 변경. 메이븐 컴파일 버전1.8로 변경 -->
    <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>
                <!-- 3.8.1 버전, 자바 버전 1.8 -->
                <version>3.8.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>

"pom.xml" 을 수정완료 했다면, "src -> main -> webapp > WEB-INF -> spring" 스프링 폴더를 "config" 라는 이름으로 바꾸고, 그 안에 있는 "appServlet -> servlet-context.xml" 을 appServlet 폴더 밖으로 꺼내고, "appServlet" 을 지웁니다.

위의 그림처럼 완료가 되었다면, "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">

	<!-- 서블릿이 동작하기 전 외부 설정 파일의 위치 -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/config/root-context.xml</param-value>
	</context-param>
	
	<!-- 스프링이 처음 시작되면서, listener가 동작되고, 위에 선언된 root-context.xml이 모든 서블릿에서 공유 되도록 스프링 초기설정파일로 설정 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<!-- 디스패쳐 서블릿을 appServlet으로 선언. 초기 파라미터 값으로 스프링 설정파일의 경로 -->
	<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/config/servlet-context.xml
				/WEB-INF/config/servlet-context2.xml
			</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
		
	<!-- 위에 선언된 appServlet을 모든 경로에 대해서 맵핑 -->
	<servlet-mapping>
		<servlet-name>appServlet</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>
	
	<!-- 한글처리 -->
	  <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>
	  <!-- 위에 지정한  encodingFilter이름을 모든 패턴에 적용-->
	  <filter-mapping>
	    <filter-name>encodingFilter</filter-name>
	    <url-pattern>/*</url-pattern>
	  </filter-mapping>
	  
	  <!-- 에러처리에 대한 내용. -->

</web-app>

스프링 설정 파일이 여러개라면, .xml 파일을 만들고 "web.xml"에 코드를 추가하면 됩니다.

한번 "servlet-context2.xml" 파일을 만들어 봅시다.

 

이제, "servlet-context.xml" 파일에 어떠한 뜻을 가지고 있는지 주석을 적어 줍시다.

여기까지 완료하셨다면, 프로젝트에 " 우클릭 -> Maven ->  Update Project" 를 누릅니다.


이렇게, 자바의 버전이 변경되었으면 완료 입니다.

 

개발환경 구축 하는게 쉽지 않죠? ㅎㅎ ( mvc 구조를 가진 Spring Project )

 

각각의 폴더는 아래처럼 활용 용도가 정해져 있습니다.

 

이제, 서버를 켜고, "localhost:포트번호/test/" 를 주소창에 입력해 봅시다.

이렇게, 나오면 잘 하신 겁니다.

 

p.s : 서버를 실행하게 되면, 여러 로그들이 console 창에 나오게 되는데, 확인을 해보면, 실행 순서를 알 수 있습니다.

 

고생하셨습니다.