2021. 6. 15. 22:44ㆍSpring
이번에는 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 창에 나오게 되는데, 확인을 해보면, 실행 순서를 알 수 있습니다.
고생하셨습니다.
'Spring' 카테고리의 다른 글
Day85 - [Spring]컨트롤러에서 view 로 변수 전달하기 (0) | 2021.06.16 |
---|---|
Day84 - [Spring]컨트롤러 객체의 구현 (0) | 2021.06.16 |
Day83 - [Spring]mvc 구조 이해하기 (0) | 2021.06.15 |
Day83 - [Spring]xml 파일을 JAVA 파일로 변경하기 (0) | 2021.06.14 |
Day83 - [Spring]의존객체 자동주입(어노테이션) (0) | 2021.06.14 |