[1] 프로젝트 생성 - Maven

image

Create New Project를 클릭합니다.

💡이미 기존 프로젝트가 열려 있는 경우

화면 상단에 File > New > Project를 선택하시면 됩니다.
만약 동일하게 진행하고자 한다면 File > Close Project를 클릭해서 이미지와 동일한 화면을 확인할 수 있습니다.

image

좌측의 프로젝트 목록에서 Maven을 클릭해주세요.

Project SDK를 사용할 jdk로 선택해주세요.

image

Name의 내용을 입력해주세요.
입력시 Location,ArtifactId이 같이 변경됩니다.

Location의 위치를 확인해주세요.

GroupId의 내용을 입력해주세요.

💡알고가기

🔹GroupId : 프로젝트를 식별해주는 고유 ID 입니다.
🔹ArtifactId : 해당 프로젝트를 식별하는데 사용됩니다.(빌드되어 생성되는 jar파일의 이름과 관련)
🔹Version : 프로젝트 또는 라이브러리의 현재 버전을 나타냅니다.

Maven에서는 라이브러리를 다룰 때, GroupId, ArtifactId, Version 정보를 함께 사용합니다.
Version에서 작성되었던 1.0-SNAPSHOT의 의미는 아직 개발 중인 버전을 뜻합니다.
기본적으로 pom.xml 파일에서 version 항목을 1.0-SNAPSHT으로 설정합니다.

[2] 프레임워크 추가 - Spring MVC

image

좌측의 생성된 프로젝트를 마우스 우클릭 > Add Framework Support… 클릭해주세요.

image

좌측의 프레임워크 목록에서 Spring > Spring MVC를 선택하고 OK를 클릭해주세요.

image

web 디렉터리와 파일들이 생성된 걸 확인합니다.


[3] 서버 설정 - Tomcat

📌 현 단계를 수행하기에 앞서 Tomcat 설치되어 있어야합니다.
설치방법은 [Tomcat 설치하기]에 포스팅을 참고해주세요.

image

화면 상단에 있는 Add Configuration…을 클릭해주세요.

image

좌측의 구성 목록에서 Tomcat Server > Local을 클릭해주세요.

image

Application server를 설치되어 있는 Tomcat을 선택해주세요.

Fix를 클릭해주세요.

💡알고가기

🔹Fix를 클릭시 IntelliJ가 서버 구성 문제를 자동으로 분석하여 해당 문제를 수정하거나 조치할 수 있는 방법을 제안해줍니다.

image

Application context루트(/)로 설정합니다.(기본값)


[4] 플러그인 설정 - Lombok

💡Lombok(롬북)이란?

Java의 라이브러리 중 하나로, 반복적이고 지루한 코드 작성을 줄여주는 간편한 방법을 제공해줍니다.
Getter, Setter, Construcctor 등 코드를 직접 작성하지 않고 어노테이션(@)을 이용해 자동으로 생성해줍니다.

image

Ctrl + Alt + S 동시에 눌러 Setting 창를 열고 Plugins를 클릭해주세요.

검색창에 Lombok을 검색하여 설치해주세요.


[5] 데이터베이스 설정 - MySQL

📌 현 단계를 수행하기에 앞서 MySQL이 설치되어 있어야합니다.

설치방법은 [MySQL 설치하기]에 포스팅을 참고해주세요.

image

Ctrl + Alt + Shift + S 동시에 눌러 Project Structure창을 열고 Libraries를 클릭해주세요.

화면 중간에 있는 + 버튼을 클릭 후 Java를 클릭해주세요.

image

C:\Program Files(x86)\MySQL\Connector J 8.0 에서 mysql-connector-j-8.0.x.jar 파일을 선택합니다.

image

적용할 프로젝트를 선택합니다.

image

추가된 라이브러리를 확인합니다.


[6] 메이븐 설정 - pom.xml

💡알고가기

🔹Maven이란?
Java 기반 프로젝트 빌드, 배포, 관리를 위한 도구입니다.
Maven을 사용하면 프로잭트 개발을 위한 의존성 관리, 빌드, 테스트, 배포, 문서화 등을 편리하게 수행할 수 있습니다.

🔹pom.xml이란?
Project Object Model의 약어로 프로젝트를 구성하며, 이를 통해 프로젝트 설정하고 빌드 프로세스를 관리합니다.

image

좌측의 디렉터리에서 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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.kunheelib</groupId>
    <artifactId>spring-project</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <java-version>1.8</java-version>
        <org.springframework-version>5.2.3.RELEASE</org.springframework-version>
        <org.aspectj-version>1.9.0</org.aspectj-version>
        <org.slf4j-version>1.7.36</org.slf4j-version>
        <log4j-version>1.2.17</log4j-version>
    </properties>

    <dependencies>
        <!--springframework-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${org.springframework-version}</version>
            <exclusions>
                <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>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${org.springframework-version}</version>
        </dependency>

        <!--aspectj-->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>${org.aspectj-version}</version>
        </dependency>

        <!--slf4j-->
        <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>
        <!--log4j-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j-version}</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>
        </dependency>

        <!--servlet-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
        </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>

        <!--junit-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <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>
        </plugins>
    </build>

</project>

image

위 코드를 복사하여 pom.xml에 붙여넣은 후 저장합니다.

화면 우측에 있는 Maven을 클릭 후 cleancompile을 클릭합니다.

image

Ctrl + Alt + Shift + S 동시에 눌러 Project Structure창을 열고 Artifacts를 클릭해주세요.
Output Layout 탭의 Available Elements를 확인합니다.

보여진 모든 항목들을 더블클릭하여 추가해주세요.

image

추가된 라이브러리를 확인합니다.


[7] 로그 설정 - log4j.xml

좌측의 디렉터리에서 src/main/resourceslog4j.xml 파일을 생성해주세요.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <param name="Target" value="System.out" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p: %c - %m%n" />
        </layout>
    </appender>

    <logger name="org.springframework.core">
        <level value="info" />
    </logger>

    <logger name="org.springframework.beans">
        <level value="info" />
    </logger>

    <logger name="org.springframework.context">
        <level value="info" />
    </logger>

    <logger name="org.springframework.web">
        <level value="info" />
    </logger>

    <root>
        <priority value="info" />
        <appender-ref ref="console" />
    </root>

</log4j:configuration>

위 코드를 복사하여 log4j.xml에 붙여넣은 후 저장합니다.


[8] 테스트

[8.1] 데이터베이스

image

import lombok.extern.log4j.Log4j;
import org.junit.Test;

import java.sql.Connection;
import java.sql.DriverManager;

import static org.junit.Assert.fail;

@Log4j
public class JdbcConnectTest {
    static {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Test
    public void connection() {
        try(Connection conn = DriverManager.getConnection(
                "jdbc:mysql://localhost:3306", "root", "비밀번호")) {
            log.info(conn);
        } catch (Exception e) {
            fail(e.getMessage());
        }
    }
}

좌측의 디렉터리에서 src/test/java/JdbcConnectTest.java 파일을 생성 후,
위 코드를 복사해서 생성한 JdbcConnectTest.java에 붙여넣어주세요.

테스트를 실행 후 정상일 경우 log에서 같은 내용을 확인할 수 있습니다.

[8.2] Spring

image

좌측의 디렉터리에서 web/WEB-INF/에서 web.xml 열고 <url-pattern>의 내용을 루트(/)로 입력해주세요.

image

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

@Controller
@RequestMapping("/home/*")
public class HomeController {

    @GetMapping("test")
    public @ResponseBody String homeTest() {
        return "Maven & Spring Create Project Success!!";
    }
}

좌측의 디렉터리에서 src/main/java/com.kunheelib.controller 패키지를 추가해주세요.
( 고정된 값이 아니기에 원하는 내용으로 작성하시면 됩니다. )

생성된 패키지에 HomeController.java 파일을 생성한 후,
위 코드를 복사해서 생성한 HomeController.java에 붙여넣어주세요.
( package 정보까지 제거하시면 안됩니다. )

image

<context:component-scan base-package="com.kunheelib.controller" />

좌측의 디렉터리에서 web/WEB-INF/에서 dispatcher-servlet.xml 열고 위 코드를 복사해서 붙여넣어주세요.

image

Tomcat을 실행 후 열린 브라우저에서 localhost:8080/home/test를 입력하면
정상일 경우 위 이미지와 같은 내용을 확인할 수 있습니다.

⚠️ bean 설정이 모두 되어 있는지 확인해주세요.

bean을 등록하기 위해 dispatcher-servlet.xml<context:component-scan>을 작성했습니다.
이 코드를 사용하려면 파일 상단 <beans>에 네임스페이스와 스키마를 선언해야합니다.

[작성 방식]
  • 네임스페이스 : xmlns:접두사=”네임스페이스 URI” 형태로 선언합니다.
  • 스키마: xsi:schemaLocation 속성안에 기재하며, {네임스페이스 URI(위치)} {스키마 파일}을 규칙으로 항상 짝수를 유지해야합니다.
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="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">

[9] 한글 설정

image

위 이미지처럼 한글이 깨져서 나오는 경우 아래 설정을 따라주세요.

image

Ctrl + Alt + S 동시에 눌러 Setting 창를 열고 Editor > Code Style > File Encodings를 클릭해주세요.

위 이미지처럼 각 Encoding 항목에 UTF-8을 선택해주세요.

image

상단 메뉴에 Help > Edit Custom VM Options…을 클릭해주세요.

-Dfile.encoding=UTF-8
-DConsole.encoding=UTF-8

위 코드를 복사하여 열린 파일에 붙여 넣은 후 IntelliJ를 재기동 해주세요.


참조


이상 포스팅을 마치겠습니다.

댓글남기기