pom.xml : 경로 /프로젝트/pom.xml -
groupId -> 프로젝트가 속한 그룹이나 조직을 식별하는 고유한 ID
artifactId -> 프로젝트 자체를 식별하는 이름을 이야기한다.
name -> 주로 프로젝트의 설명이나 이름을 명시한다.
version -> 프로젝트의 버전을 이야기한다.
packaging-> 패키징 유형을 선택 [war]
<modelVersion>4.0.0</modelVersion>
<groupId>com.kh</groupId>
<artifactId>spring</artifactId>
<name>springProject</name>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<java-version>11</java-version>
<org.springframework-version>5.3.33</org.springframework-version>
<org.aspectj-version>1.6.10</org.aspectj-version>
<org.slf4j-version>1.6.6</org.slf4j-version>
</properties>
자주 사용되 것들을 변수처럼 정의해두고 다른 곳에서 재사용하는 것
Dependencies :
태그 안에서 이 프로젝트가 사용하는 다양한 외부 라이브러리들을 선언한 것
Build 설정 <build> 태그에서는 프로젝트의 빌드와 관련된 설정이 포함
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>${java-version}</source>
<target>${java-version}</target>
<compilerArgument>-Xlint:all</compilerArgument>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.3</version>
</plugin>
</plugins>
</build>
web.xml : 경로 : spring/src/main/webapp/WEB-INF/web.xml
- Spring 컨텍스트 초기화:
- <context-param> 요소를 통해 Spring의 루트 애플리케이션 컨텍스트를 정의합니다. 여기서 root-context.xml과 spring-security.xml 파일을 불러옵니다.
- <listener> 요소는 ContextLoaderListener를 사용하여 Spring 컨텍스트를 초기화합니다.
- DispatcherServlet 설정:
- <servlet> 요소에서 DispatcherServlet을 정의하고, 해당 서블릿이 사용할 컨텍스트 설정 파일인 servlet-context.xml을 지정합니다. 이 서블릿은 HTTP 요청을 처리하는 주요 컴포넌트입니다.
- <load-on-startup> 요소는 서블릿이 애플리케이션 시작 시 즉시 로드되도록 설정합니다.
- URL 매핑:
- <servlet-mapping> 요소를 통해 DispatcherServlet이 모든 URL 경로(/*)를 처리하도록 설정합니다.
- 인코딩 필터 설정:
- <filter> 요소는 CharacterEncodingFilter를 정의하여 요청과 응답의 문자 인코딩을 UTF-8로 설정합니다.
- 이 필터는 모든 요청(/*)에 대해 적용됩니다.
- 기타 기능:
- forceEncoding 파라미터는 인코딩 충돌 시에도 강제로 UTF-8로 설정하도록 합니다.
<!-- 옵션1. 인코딩방식을 UTF-8 -->
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<!-- 옵션2. 혹시 충돌이 나더라도 강제로 인코딩방식을 UTF-8 -->
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
root-context.xml : 경로 /프로젝트명/src/main/webapp/WEB-INF/spring/root-context.xml
데이터베이스 연결 설정 :
BasicDataSource 빈을 통해서 Oracle 데이터베이스에 연결하기 위한 설정을 정의한다.
driverClassName,
url,
username,
password
속성을 사용해 데이터베이스 연결 정보를 제공한다.
<bean class="org.apache.commons.dbcp.BasicDataSource" id="dataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"/>
<property name="username" value="c##spring"/>
<property name="password" value="spring"/>
</bean>
예시)
MyBatis 설정:
<bean class="org.mybatis.spring.SqlSessionFactoryBean" id="sqlSessionFactory">
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<property name="dataSource" ref="dataSource"/>
</bean>
SqlSessionTemplate: MyBatis에서
SQL을 실행하고 매퍼 인터페이스와 상호 작용할 때 사용하는 클래스
<bean class="org.mybatis.spring.SqlSessionTemplate" id="sqlSession">
<constructor-arg ref="sqlSessionFactory"/>
</bean>
constructor-arg: 위에서 설정한 sqlSessionFactory 빈을 생성자 인자로 전달하여
MyBatis가 데이터베이스와 상호작용할 수 있도록 한다.
* property : setter를 통한 주입
* constructor-arg : 생성자를 통한 주입
servlet-context.xml :
/프로젝트명/src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml
주요 역할 :
XML 네임스페이스 및 스키마 정의
Spring MVC 어노테이션 기반 컨트롤러 활성화 :
Spring MVC의 @Controller 애노테이션을 활성화하는 설정
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <beans:property name="prefix" value="/WEB-INF/views/" /> <beans:property name="suffix" value=".jsp" /> </beans:bean>
<context:component-scan>
태그는 특정 패키지 내의 빈(Bean)들을 자동으로 검색하여
스프링 컨테이너에 등록하는 설정
<context:component-scan base-package="com.kh.spring"/>
Component Scan
- <context:component-scan> 태그는 특정 패키지 내의 빈(Bean)들을 자동으로 검색하여 스프링 컨테이너에 등록하는 설정입니다.
- 여기서는 com.kh.spring 패키지 내에서 컴포넌트(@Controller, @Service, @Repository 등)들을 자동으로 스캔하여 등록합니다.