Spring 프로젝트의 전체적인 구조를 보여줍니다. 주요 폴더로는 src, target, pom.xml 등이 있습니다.

실제 애플리케이션 코드와 리소스가 위치하는 폴더입니다. java 폴더에는 Java 소스 코드가, resources 폴더에는 설정 파일 등이 위치합니다.

웹 애플리케이션과 관련된 파일들이 위치하는 폴더입니다. JSP 파일, 정적 리소스(CSS, JavaScript, 이미지 등)가 이 폴더에 위치합니다.

Spring MVC의 기본적인 요청 처리 흐름을 보여줍니다. 클라이언트의 요청부터 응답까지의 과정을 도식화하고 있습니다.

Spring 컨테이너 구동 시 사용되는 XML 설정 파일의 구조를 보여줍니다. 이 파일에서 Bean, AOP, Transaction 등 다양한 Spring 설정을 정의합니다.

Spring MVC의 요청 처리 흐름은 다음과 같은 단계로 이루어집니다:
@Controller
public class HelloController {
@GetMapping("/hello")
public String hello(Model model) {
model.addAttribute("message", "Hello, Spring MVC!");
return "hello";
}
}
Spring Bean의 생명주기는 크게 생성, 초기화, 사용, 소멸의 4단계로 나눌 수 있습니다. 각 단계에서 Spring은 Bean의 상태를 관리하고 필요한 작업을 수행합니다.
Bean 초기화와 소멸 메서드를 정의하는 예시:
public class ExampleBean implements InitializingBean, DisposableBean {
@Override
public void afterPropertiesSet() throws Exception {
// 초기화 로직: Bean 프로퍼티 설정 후 호출됩니다.
}
@Override
public void destroy() throws Exception {
// 소멸 로직: Bean이 컨테이너에서 제거되기 전에 호출됩니다.
}
}
Maven 프로젝트의 설정 파일로, 프로젝트의 의존성과 빌드 설정을 관리합니다.
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.9</version>
</dependency>
</dependencies>
웹 애플리케이션의 배치 설명자(deployment descriptor)로, 서블릿 설정 등 웹 애플리케이션의 구성을 정의합니다.
<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>
Spring의 핵심 설정 파일로, Bean 정의와 애플리케이션의 전반적인 구성을 담당합니다.
<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="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${database.driver}"/>
<property name="url" value="${database.url}"/>
<property name="username" value="${database.username}"/>
<property name="password" value="${database.password}"/>
</bean>
</beans>
Spring MVC 관련 설정을 담당하는 파일로, 컨트롤러 스캔, 뷰 리졸버 등을 설정합니다.
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
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
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">
<context:component-scan base-package="com.example.controller"/>
<mvc:annotation-driven/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
이러한 설정 파일들을 통해 Spring 프로젝트의 구조와 동작 방식을 정의하고 커스터마이즈할 수 있습니다. 최근에는 Java 기반의 설정이 XML 기반 설정을 대체하는 추세이지만, 여전히 많은 프로젝트에서 XML 설정을 사용하고 있습니다.