๋ณธ ํฌ์คํ ์ WHITEPAEK ๋์ ๊ธ์ ์ฐธ๊ณ ํ์ฌ ์์ฑํ์ต๋๋ค.
Spring ์ ๋ฌธ์๋ก์จ IntelliJํ๊ฒฝ์ Springํ๊ฒฝ์ ์ค์ ํ๊ณ ์ถ์ด ์ด๊ณณ ์ ๊ณณ ์ฐพ์๋ณด๊ฒ ๋์๊ณ whitepaek๋์ ํฌ์คํ ์ ์ฐธ๊ณ ํ์ฌ ์ค์ต์ ์งํํ ์ ์๊ฒ ๋์๋ค.
๊ฐ์ธ์ ์ผ๋ก ๋ณต์ตํ๋ฉด์ ํ๋ฒ ๋ ์ ๋ฆฌํ๊ณ ์ ํฌ์คํ ์ ์งํํ๊ฒ ๋์๋ค.
Spring์ 3.2.18๋ฒ์ ์ผ๋ก ์ค์ ํ๊ณ ์ํ๋ค.
OS : Window 10
Database : Mysql 8.0.18
Server : Tomcat 7.0.99ver
<Maven ํ๋ก์ ํธ ์์ฑ>
1. Create New Project - Maven ํ๋ก์ ํธ ํด๋ฆญ - JDK ๋ฒ์ ์ค์ - Create from archetype ์ฒดํฌ X - Next
2. GroupId, ArtifactId ์ค์ - Finish
GroupId : ํ๋ก์ ํธ๋ฅผ ์๋ณํด์ฃผ๋ ๊ณ ์ ID (ํ๋ก์ ํธ์์ ์ปจํธ๋กคํ๋ ๋๋ฉ์ธ ์ด๋ฆ๊ณผ ๋์ผํ๊ฒ ์ ๋ ฅํ๋ค.)
ArtifactId : ๋ฒ์ ์ ๋ณด๋ฅผ ์๋ตํ ์ด๋ฆ (ํ๋ก์ ํธ ์ด๋ฆ๊ณผ ๋์ผํ๊ฒ ์ ๋ ฅํ๋ค.)
3. Enable Auto-Import ํด๋ฆญ
<Spring Framework ์ค์ >
1. Root ๋๋ ํ ๋ฆฌ SpringMVCMavenProject์์ ๋ง์ฐ์ค ์ฐํด๋ฆญ - Add Framework Supprot... ํด๋ฆญ
2. Spring MVC ํด๋ฆญ - Configure.. ํด๋ฆญ
3.1 3.2.18๋ฒ์ ์ ํ - OK
3.2 Springํญ - Configure... - 3.2.18๋ฒ์ ์ ํ - OK
4. Web ๋๋ ํฐ๋ฆฌ๊ฐ ์ถ๊ฐ๋์ด์๋ ๋ชจ์ต์ ๋ณผ ์ ์๋ค.
<Tomcat ์ค์ >
1. Add Configuration... ํด๋ฆญ
2. Templates - Tomcat Server - Local ํญ์์ Application server์ Tomcat์ ์ถ๊ฐํด์ค๋ค - ์ฐ์ธก ์๋จ์ Create configuration ํด๋ฆญ
3. ์ฐ์ธก ํ๋จ Fix ๋ฒํผ ํด๋ฆญ
4. Application context ๊ฒฝ๋ก๋ฅผ / ๋ก ์ค์
5. ํฐ์บฃ ์ค์ ์๋ฃ
<Lombok Plugin ์ค์น>
1. File - Settings - PluginsLombok Plugin ์ค์น
Installํ IDE๋ฅผ ๊ป๋ค ์ผ ๋ค.
<Database ์ค์ >
1. Mysql DB ์ค์ ํ๊ธฐ
https://dev.mysql.com/downloads/connector/j/
์ ๋งํฌ์์ MySQL Connector/J๋ฅผ ๋ฐ๋๋ค.
2. No thanks, just start my download๋ก ๋ค์ด๋ก๋๋ฅผ ๊ณ์ํ๋ค.
3. ํด๋ ๋ด์ mysql-connector-java-8.xx.jar ํ์ผ์ ์์น๋ฅผ ์ ์์๋์..!
ex) C:\Users\Downloads\mysql-connector-java-8.0.19\
4. Project Structure์ฐฝ์ผ๋ก ์ด๋
5. Librariesํญ - +๋ฒํผ - Java ํด๋ฆญ - mysql-connector-java-8.xx.jar ์ ํ - OK - OK - OK
<pom.xml ์ค์ >
1. pom.xml ์ค์
ํ๋ก์ ํธ ์ค์ , ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์กด์ฑ ์ค์ , ๋น๋ ์ค์ ์ ํ ์ ์๋ค.
2. <project> ... </project> ํ๊ทธ ์ฌ์ด์ ์ฝ๋๋ฅผ ์ ๋ ฅํ๋ค.
<dependencies>
<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.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${org.aspectj-version}</version>
</dependency>
<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.17</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>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</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>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${org.springframework-version}</version>
</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>
3. Project Structure - Artifactsํญ - Available Elements์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ๋ถ ๋๋ธํด๋ฆญ - OK
<log4j.xml ํ์ผ ์ค์ >
1. 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 Logger -->
<root>
<priority value="info" />
<appender-ref ref="console" />
</root>
</log4j:configuration>
<Database ์ฐ๋ ํ ์คํธ>
1. Mysql ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ ์์ ์ผ๋ก ์ฐ๊ฒฐ๋์๋์ง ํ์ธํ๋ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
src/test/java/JDBCTest.class ๋ฅผ ์์ฑํ๋ค.
์๋ ์ฝ๋์์ line 22์ url ๋ถ๋ถ์์ dbname, root, password ๋ถ๋ถ์ ์์ ์ ํ๊ฒฝ์ ๋ง๊ฒ ์ ์ด์ฃผ๋ฉด ๋๋ค.
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 JDBCTest {
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://127.0.0.1:3306/dbname?serverTimezone=UTC", "root", "password")) {
log.info(conn);
} catch (Exception e) {
fail(e.getMessage());
}
}
}
2. Mysql์ ์คํํ๋ค.
3. JDBCTest๋ฅผ Runํ๋ค.
4. ๋ค์๊ณผ ๊ฐ์ด Log๊ฐ ๋จ๋ฉด ์ฑ๊ณต!
<Spring MVC - Controller ํ ์คํธ>
1. web/WEB-INF/web.xml ์์
<url-pattern>*.form</url-pattern>์ <url-pattern>/</url-pattern>๋ก ๊ณ ์น๋ค.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
2. src/main/java/com.mrjun.controller ํจํค์ง ์์ฑ ํ HelloController.class ์์ฑ
package com.mrjun.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("/home/*")
public class HelloController {
@RequestMapping(method = RequestMethod.GET)
public @ResponseBody String homeTest() {
return "Spring + Maven";
}
}
3. dispatcher-servlet.xml ํ์ผ์ ์๋ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ค.
<context:component-scan base-package="com.mrjun.controller" />
์ ์ฒ๋ผ ๋นจ๊ฐ์ ๊ธ์๊ฐ ๋๋ฉด "context"๋ฅผ ํด๋ฆญํ๊ณ ALT + ENTER๋ก ๋น ๋ฅธ import๋ฅผ ํด์ค๋ค.
4. ์ค๋ฅธ์ชฝ ์์์ ํฐ์บฃ์ผ๋ก ์คํ ์ค์ ์ ํด์ค ํ ํ๋ก์ ํธ๋ฅผ ์คํํ๋ค.
5. ๋ธ๋ผ์ฐ์ ์ localhost:8080์ ์ ๋ ฅํ๋ฉด web/index.jspํ์ผ์ด ์ถ๋ ฅ๋๋ค.
์ถ๊ฐ๋ก localhost:8080/home/test๋ฅผ ์ ๋ ฅํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด HelloController์ ํด๋นํ๋ ๋ถ๋ถ์ด ๋์จ๋ค!
*Reference
https://whitepaek.tistory.com/41
'๐ฑ Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
cannot resolve web.servlet.view.InternalResourceViewResolver (0) | 2020.03.15 |
---|---|
์ค๋ฅํ์๊ธฐ๋ก (1) | 2020.03.13 |
์์ฐจํ์๊ณผ ์ด์งํ์ ์๋์ฐจ์ด (1) | 2020.03.07 |
Lombok ์ ๋ฆฌ (0) | 2020.02.12 |
Log4j ์ ๋ฆฌ (0) | 2020.02.12 |