본문 바로가기
InteliJ

InteliJ로 Spring Legacy Project 생성하기

by 함준혁 2023. 3. 28.

인텔리제이로 스프링 레거시 프로젝트를 생성하는 방법입니다.


- InteliJ 2022.03.02

- jdk 1.8
- maven
- tomcat


먼저 두가지 방법이 있습니다.

1. 이미 생성된 프로젝트 import 하기.

저의 깃 허브에 올려놓겠습니다.

2. 직접 생성하기

- 'Name'에 프로젝트명 입력
- 'Location'에 프로젝트 경로 입력

- 'JDK' 에 사용하실 Java version 등록
- 'Archetype'에 webapp 입력 후, 하단에 'org.apache.maven.archetypes:maven-archetype-webapp' 클릭
- 'Create' 버튼 클릭

프로젝트 생성 후,  pom.xml을 수정해줍니다. pom.xml이란, Maven의 파일입니다.

Maven은 자바 프로젝트의 라이브러리 관리, 빌드, 배포를 자동화하기 위한 도구입니다. Maven은 프로젝트의 빌드를 위해 pom.xml(POM: Project Object Model) 파일을 사용합니다. 이 파일은 프로젝트의 구성 정보, 빌드 환경 설정, 의존성 정보 등을 포함합니다.

Maven을 사용하면 간단한 명령어를 통해 프로젝트를 빌드하고 필요한 라이브러리를 다운로드할 수 있습니다. 또한 Maven은 로컬 저장소(local repository)와 원격 저장소(remote repository)를 지원하여 라이브러리의 버전을 관리하고 다른 프로젝트와 의존성을 공유할 수 있습니다.

pom.xml에 Spring Legacy Project에서 사용되는 라이브러리 목록( dependency )을 추가해 줄 것입니다.

<dependencies> 부터 </project> 까지 잘라낸 후, 그 위치에 아래를 복사해서 넣어줍니다.

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>자바버전</maven.compiler.source>
    <maven.compiler.target>자바버전</maven.compiler.target>
    <java-version>자바버전</java-version>
    <org.springframework-version>5.3.20</org.springframework-version>
    <org.slf4j-version>1.7.25</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>

    <!-- 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>

    <!-- @Inject -->
    <dependency>
      <groupId>javax.inject</groupId>
      <artifactId>javax.inject</artifactId>
      <version>1</version>
    </dependency>

    <!-- 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>

    <!-- data base -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.22</version>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.6</version>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.3.2</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>${org.springframework-version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.tomcat</groupId>
      <artifactId>tomcat-dbcp</artifactId>
      <version>9.0.31</version>
    </dependency>

    <!-- fileupload -->
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.3.1</version>
    </dependency>

    <!-- Lombok -->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.12</version>
      <scope>provided</scope>
    </dependency>

    <!-- json -->
    <dependency>
      <groupId>com.googlecode.json-simple</groupId>
      <artifactId>json-simple</artifactId>
      <version>1.1.1</version>
    </dependency>
    <dependency>
      <groupId>com.google.code.gson</groupId>
      <artifactId>gson</artifactId>
      <version>2.8.2</version>
    </dependency>
    <!-- jackson-core -->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.9.2</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <finalName>mvc_test</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>자바버전</source>
          <target>자바버전</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>


'자바버전' 이라고 작성되어있는 부분에는 사용하실 자바 버전을 입력해주시면 됩니다. 저는 jdk 1.8을 사용하므로 1.8이라고 입력해주었습니다.

이와 같이 입력이 되었을텐데, 우측 상단의 메이븐 로드 버튼을 눌러, 라이브러리들을 활성화 시켜줍니다.

활성화 시켜준 후, 디렉토리들을 생성해서 이와 같이 만들어줍니다.

- 전


- 후

- src 우클릭, 디렉토리, test 생성
- main 우클릭, 디렉토리, java 생성
- resources 폴더 복사후  webapp 안에 붙여넣기
- test 폴더에서 resources 폴더 생성
- WEB-INF 에서 spring 디렉토리 생성
- WEB-INF 에서 views 디렉토리 생성

- spring 에서 appServlet 디렉토리 생성

- spring 에서 root-context.xml 생성
- appServlet 에서 servlet-context.xml 생성
- index.jsp views디렉토리 안으로 이동

 

그리고 아래를 참고하여 맞는 곳에 복사하여 붙여 넣어줍니다.

1. root context.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:jdbc="http://www.springframework.org/schema/jdbc"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">


</beans>

2. servlet-context.xml

 

<?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">

    <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="" />

</beans:beans>

저같은 경우는 패키지명이 com.ceojun7.controller와 같으므로,

<context:component-scan base-package="com.ceojun7.controller" /> 로 입력했습니다.


3. index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<body>
<h2>안녕 스프링 레거시 프로젝트</h2>
</body>
</html>

4. web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/spring/root-context.xml
    </param-value>
  </context-param>

  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

  <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>

  <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>
  </filter>

  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

</web-app>

 

5. 패키지 내에 HomeController.java 생성 후

package com.ceojun7.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HomeController {
    @GetMapping("/")
    public String index() {
        return "index";
    }
}

 

와 같이 넣어줍니다.

스프링 레거시 프로젝트와 같이 파일 구조들을 설정했습니다.

이제 서버를 구동하기 위한 톰캣 설정 후, 서버를 구동시켜주면 이와 같이 성공적으로 프로젝트가 실행된 모습을 확인할 수 있습니다.

톰캣 설정은 따로 포스팅 해 두었으니 필요하신 분은 참고 바랍니다.

728x90