낭만 프로그래머
Intellij에 Spring MVC 5 설치하기 본문
Intellij 에 Spring MVC 5 , Log4j2, Mybatis 를 동시에 설치
1. A. File - New - Project 를 선택 한 후 Maven을 선택 후 Next 를 클릭한다
2. 필요한 정보를 입력 후 Finish를 클릭한다
3. 프로젝트를 선택 후 오른쪽 마우스를 클릭하여 Add Framework Support를 선택한다
4. Spring - Spring MVC 를 체크 후 OK를 클릭한다
5. 필요 라이브러리를 받기 위하여 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>com.airulsoft.dxplm</groupId>
<artifactId>DXPlmManagement</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<slf4j.version>1.7.25</slf4j.version>
<log4j.version>2.14.1</log4j.version>
<javax.servlet-api-version>4.0.1</javax.servlet-api-version>
<javax.servlet.jsp-api-version>2.3.3</javax.servlet.jsp-api-version>
<javax.servlet.jsp.jstl-api-version>1.2.2</javax.servlet.jsp.jstl-api-version>
<taglibs-standard-impl-version>1.2.5</taglibs-standard-impl-version>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.9.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc -->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>8.4.1.jre11</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.15</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${slf4j.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
</dependency>
<!--For and sfl4j Bridge maintenance-->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
<version>${log4j.version}</version>
<scope>runtime</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${javax.servlet-api-version}</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>${javax.servlet.jsp-api-version}</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet.jsp.jstl/javax.servlet.jsp.jstl-api -->
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>javax.servlet.jsp.jstl-api</artifactId>
<version>${javax.servlet.jsp.jstl-api-version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.taglibs/taglibs-standard-impl -->
<dependency>
<groupId>org.apache.taglibs</groupId>
<artifactId>taglibs-standard-impl</artifactId>
<version>${taglibs-standard-impl-version}</version>
</dependency>
</dependencies>
</project>
6. File - Project Structure 를 선택한 후 Arifacts 항목에서 Available Elements에 있는 항목들을 output root 으로 lib 폴더에 드래그앤드롭을 하여 이동한 후 OK를 클릭한다. (lib 폴더는 처음에 존재하지 않으므로 생성한다)
7. /WEB-INF/web.xml 을 아래의 내용으로 변경
<?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>
<!-- Log record -->
<context-param>
<param-name>log4jConfiguration</param-name>
<param-value>/WEB-INF/log4j2.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>com.ariulsoft.dxplm.dxplmmanagement.listener.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
8. /WEB-INF/applicationContext.xml 을 아래 내용으로 수정
- Datasource 및 Mybatis 설정이 적용
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath*:config/mappers/*.xml" />
<!-- <property name="transactionFactory"> -->
<!-- <bean class="org.apache.ibatis.transaction.managed.ManagedTransactionFactory" /> -->
<!-- </property> -->
</bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<constructor-arg ref="dataSource" />
</bean>
<!-- <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">-->
<!-- <property name="mapperInterface" value="com.ariulsoft.dxplm.dxplmmanagement.mapper.UserMapper" />-->
<!-- <property name="sqlSessionFactory" ref="sqlSessionFactory" />-->
<!-- </bean>-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"></property>
<property name="url" value="jdbc:sqlserver://localhost:1433;databaseName=DXPLM"></property>
<property name="username" value="유저"></property>
<property name="password" value="패스워드"></property>
</bean>
</beans>
9. /WEB-INF/dispatcher-servlet.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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
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
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- Annotation -->
<mvc:annotation-driven></mvc:annotation-driven>
<!-- Base package -->
<context:component-scan base-package="com.ariulsoft.dxplm.dxplmmanagement.controller,com.ariulsoft.dxplm.dxplmmanagement.service"></context:component-scan>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<!-- <mvc:resources location="/app-assets/" mapping="/app-assets/**"></mvc:resources>-->
</beans>
10. dispatcher-servlet.xml에서 설정한 base-package의 정보대로 패키지를 생성 후 파일을 생성한다.
11. 테스트를 위해 login.jsp 파일을 생성한다
12. /WEB-INF/log4j2.xml 파일을 생성한다
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="info" monitorInterval="30">
<Properties>
<Property name="LOG_FORMAT">%d{yyyy-MM-dd HH:mm:ss} %p %m%n</Property>
<Property name="BASE_DIR">c:/log/DXPlmManagement</Property>
</Properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT" follow="true">
<PatternLayout pattern="${LOG_FORMAT}"/>
</Console>
<RollingFile name="File"
fileName="${BASE_DIR}/DXPlmManagement.log"
filePattern="${BASE_DIR}/DXPlmManagement.%d{yyyyMMdd}.log">
<PatternLayout pattern="${LOG_FORMAT}"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true" />
</Policies>
<DefaultRolloverStrategy>
<Delete basePath="${BASE_DIR}">
<IfFileName glob="*.log" />
<IfLastModified age="30d" />
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="Console"/>
<AppenderRef ref="File" />
</Root>
</Loggers>
</Configuration>
13. (선택) File - Setting - Maven 을 선택하여 Maven 환경을 설정한다
14. 톰캣을 설정한다. 주의해야 할 것은 Server - URL 에 맞추어 Configurations - Deployment 에서 Application context 를 수정하는 것을 잊지 말아야 한다. (Server -URL 만 변경후 왜 안되는지 1시간을 고민했음 ㅜㅜ)
'Java > Spring' 카테고리의 다른 글
Spring MVC 5 에서 Spring Scheduler 사용하기 (0) | 2021.12.14 |
---|---|
Spring + Mybatis에서 트랜젝션(Transaction) 처리 (0) | 2021.12.06 |
Spring Boot 기본 세팅 (DB + Mybatis + Log4j2) (0) | 2020.11.04 |
JSP에서 Invalid character 관련하여 400 에러가 발생시 (0) | 2020.04.14 |
Spring Boot 2.x 에서 HikariCP 문제점 해결 (0) | 2019.05.02 |