인텔리제이의 Add Framewrok Support를 이용해서 Spring MVC 설정하는 방법이 대부분이지만, Add Framework Support 기능이 정상 동작하지 않는 다수의 케이스를 위해 작성
Spring MVC 설정및 동작을 위한 최소한의 설정만 작성
1. 프로젝트 생성
Maven Archetype 으로 새로운 프로젝트를 생성
Archetype -> maven-archetypoe-webapp 설정
2. pom.xml 설정
Maven Archetype으로 프로젝트를 생성하면, Spring 세팅이 되어 있지 않은 깡통 프로젝트이기 때문에 Spring MVC Dependency를 추가해줘야 한다.
pom.xml에 Spring Web MVC Dependency 추가
- Maven Repository 에서 spring mvc 검색후 적절한 버전을 선택하여 추가.
- 해당 글에서는 5.3.18 버전 사용
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.3</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.3</version>
</dependency>
3. ApplicationContext.xml, Dispatcher-Serlvet.xml 생성
Spring Dependency를 추가하고 나면, xml 파일 생성시 아래와 같이 Spring Config 타입으로 파일 생성이 가능해진다.
Spring Config 타입으로 각각 ApplicationContext.xml, Dispatcher-Servlet.xml 이름으로 파일을 생성한다.
만들어진 각 파일은 이름을 통해 알 수 있듯이, BeanFactory 하위의 ApplicationContext - SpringContainer 설정 및 DispatcherServlet 설정을 담당하는 설정 파일이다.
3.1 ApplicationContext.xml 설정
ApplicationContext.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>
추후 필요에 따라 Bean 관련 설정 추가
3.2 Disapatcher-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: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">
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
<context:component-scan base-package="com.study.board" />
<mvc:annotation-driven/>
</beans>
InternalResourceViewResolver Bean
- DispatcherServlet의 ViewResolver와 관련된 설정으로, 위 코드는 String 형태로 DispatcherServlet에 전달된 view에 앞 뒤로 설정된 경로와 타입을 붙여 DispatcherServlet이 view의 경로와 이름을 명확히 전달할 수 있도록 하기 위함
component-scan
- Component Annotation을 가지는 클래스를 스캔하여 Bean으로 등록하기 위해, 스캔 기본 경로를 설정
- 위 코드 기준 com.study.board 하위에 Component Annotation을 가지고 있는 모든 클래스는 Bean으로 등록된다.
4. 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_3_1.xsd" version="3.1">
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<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>
<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>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
web.xml에서는 dispatcherServlet 설정 파일의 경로, path 및 각종 Tomcat 설정을 진행한다.
5. Tomcat 설정
Spring MVC는 Spring Boot와 다르게 Embeded Tomcat이 없기 때문에, 별도의 외부 Tomcat을 다운 받아 연동해줘야 한다.
해당 글에서는 Tomcat 9 을 사용
https://tomcat.apache.org/download-90.cgi - tar.gz 다운
인텔리제이 전체 검색 (쉬프트 두번) 으로 Edit Configuration 진입
좌측 Add new > Tomcat Server > Local
Application Server 의 Configure 클릭하여 다운받은 Tomcat 추가 (톰캣 파일들이 담겨 있는 폴더를 Tomcat Home으로 추가)
Tomcat 설정이 끝난후, Deployment 탭으로 이동하여 + 버튼 클릭, artifact에서 ~:war exploded를 선택하여 서버 실행(배포) 시에 실행될 war파일을 설정해준다.
이후 아래 Application context의 경로를 '/'로 변경해준후 ok 버튼으로 설정 마무리한다.
6. Controller 작성 및 테스트
모든 설정이 끝났으면 간단한 Controller를 작성하여 서버 실행시 프로젝트 생성과 함께 만들어져있던 index.jsp 파일이 정상적으로 브라우저에 노출되는지 확인
@Controller
public class TestController {
@GetMapping
public String home(Model model) {
return "index";
}
}
결과
'Spring' 카테고리의 다른 글
[Spring] 스프링 부트(Spring Boot) - H2 DB 연동하여 사용하기(with.JPA) (0) | 2024.11.22 |
---|---|
[Spring] Junit 테스트시 Atomikos 커넥션풀의 Connection Name 중복 오류 (0) | 2024.07.08 |
[Spring] Spring Boot 3 마이그레이션 시작하기 (0) | 2023.12.13 |
[JPA] 일대다(1:N), 다대일(N:1) 관계 (0) | 2023.09.03 |
[JPA] 연관관계의 주인 (0) | 2023.09.01 |