[IntelliJ] Maven & Spring 프로젝트 만들기
[1] 프로젝트 생성 - Maven
Create New Project를 클릭합니다.
- 💡이미 기존 프로젝트가 열려 있는 경우
- 화면 상단에 File > New > Project를 선택하시면 됩니다.
만약 동일하게 진행하고자 한다면 File > Close Project를 클릭해서 이미지와 동일한 화면을 확인할 수 있습니다.
좌측의 프로젝트 목록에서 Maven을 클릭해주세요.
Project SDK를 사용할 jdk로 선택해주세요.
- 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
좌측의 생성된 프로젝트를 마우스 우클릭 > Add Framework Support… 클릭해주세요.
좌측의 프레임워크 목록에서 Spring > Spring MVC를 선택하고 OK를 클릭해주세요.
web 디렉터리와 파일들이 생성된 걸 확인합니다.
[3] 서버 설정 - Tomcat
📌 현 단계를 수행하기에 앞서 Tomcat 설치되어 있어야합니다.
설치방법은 [Tomcat 설치하기]에 포스팅을 참고해주세요.
화면 상단에 있는 Add Configuration…을 클릭해주세요.
좌측의 구성 목록에서 Tomcat Server > Local을 클릭해주세요.
Application server를 설치되어 있는 Tomcat을 선택해주세요.
Fix를 클릭해주세요.
- 💡알고가기
- 🔹Fix를 클릭시 IntelliJ가 서버 구성 문제를 자동으로 분석하여 해당 문제를 수정하거나 조치할 수 있는 방법을 제안해줍니다.
Application context를 루트(/)로 설정합니다.(기본값)
[4] 플러그인 설정 - Lombok
- 💡Lombok(롬북)이란?
- Java의 라이브러리 중 하나로, 반복적이고 지루한 코드 작성을 줄여주는 간편한 방법을 제공해줍니다.
Getter, Setter, Construcctor 등 코드를 직접 작성하지 않고 어노테이션(@)을 이용해 자동으로 생성해줍니다.
Ctrl
+Alt
+S
동시에 눌러 Setting 창를 열고 Plugins를 클릭해주세요.검색창에 Lombok을 검색하여 설치해주세요.
[5] 데이터베이스 설정 - MySQL
📌 현 단계를 수행하기에 앞서 MySQL이 설치되어 있어야합니다.
설치방법은 [MySQL 설치하기]에 포스팅을 참고해주세요.
Ctrl
+Alt
+Shift
+S
동시에 눌러 Project Structure창을 열고 Libraries를 클릭해주세요.화면 중간에 있는
+
버튼을 클릭 후 Java를 클릭해주세요.
C:\Program Files(x86)\MySQL\Connector J 8.0 에서 mysql-connector-j-8.0.x.jar 파일을 선택합니다.
적용할 프로젝트를 선택합니다.
추가된 라이브러리를 확인합니다.
[6] 메이븐 설정 - pom.xml
- 💡알고가기
- 🔹Maven이란?
Java 기반 프로젝트 빌드, 배포, 관리를 위한 도구입니다.
Maven을 사용하면 프로잭트 개발을 위한 의존성 관리, 빌드, 테스트, 배포, 문서화 등을 편리하게 수행할 수 있습니다.
🔹pom.xml이란?
Project Object Model의 약어로 프로젝트를 구성하며, 이를 통해 프로젝트 설정하고 빌드 프로세스를 관리합니다.
좌측의 디렉터리에서 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>
위 코드를 복사하여 pom.xml에 붙여넣은 후 저장합니다.
화면 우측에 있는 Maven을 클릭 후 clean 및 compile을 클릭합니다.
Ctrl
+Alt
+Shift
+S
동시에 눌러 Project Structure창을 열고 Artifacts를 클릭해주세요.
Output Layout 탭의 Available Elements를 확인합니다.보여진 모든 항목들을
더블클릭
하여 추가해주세요.
추가된 라이브러리를 확인합니다.
[7] 로그 설정 - log4j.xml
좌측의 디렉터리에서 src/main/resources에 log4j.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] 데이터베이스
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
좌측의 디렉터리에서 web/WEB-INF/에서 web.xml 열고
<url-pattern>
의 내용을 루트(/)로 입력해주세요.
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 정보까지 제거하시면 안됩니다. )
<context:component-scan base-package="com.kunheelib.controller" />
좌측의 디렉터리에서 web/WEB-INF/에서 dispatcher-servlet.xml 열고 위 코드를 복사해서 붙여넣어주세요.
Tomcat을 실행 후 열린 브라우저에서 localhost:8080/home/test를 입력하면
정상일 경우 위 이미지와 같은 내용을 확인할 수 있습니다.
- ⚠️ bean 설정이 모두 되어 있는지 확인해주세요.
- bean을 등록하기 위해 dispatcher-servlet.xml 에
<context:component-scan>
을 작성했습니다. - 이 코드를 사용하려면 파일 상단
<beans>
에 네임스페이스와 스키마를 선언해야합니다. - [작성 방식]
- 네임스페이스 : xmlns:접두사=”네임스페이스 URI” 형태로 선언합니다.
- 스키마: xsi:schemaLocation 속성안에 기재하며, {네임스페이스 URI(위치)} {스키마 파일}을 규칙으로 항상 짝수를 유지해야합니다.
- 네임스페이스 : xmlns:접두사=”네임스페이스 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] 한글 설정
위 이미지처럼 한글이 깨져서 나오는 경우 아래 설정을 따라주세요.
Ctrl
+Alt
+S
동시에 눌러 Setting 창를 열고 Editor > Code Style > File Encodings를 클릭해주세요.위 이미지처럼 각 Encoding 항목에 UTF-8을 선택해주세요.
상단 메뉴에 Help > Edit Custom VM Options…을 클릭해주세요.
-Dfile.encoding=UTF-8
-DConsole.encoding=UTF-8
위 코드를 복사하여 열린 파일에 붙여 넣은 후 IntelliJ를 재기동 해주세요.
참조
이상 포스팅을 마치겠습니다.
댓글남기기