Spring Framework (Spring MVC + MyBatis + Tomcat) 기반의 기본적인 XML 구성 예제 프로젝트 구조

📁 예제 프로젝트 디렉토리 구조 (기본 구조)

MySpringProject/
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com/example/
│   │   │       ├── controller/
│   │   │       │   └── UserController.java
│   │   │       ├── service/
│   │   │       │   ├── UserService.java
│   │   │       │   └── impl/UserServiceImpl.java
│   │   │       ├── mapper/
│   │   │       │   └── UserMapper.java
│   │   │       └── model/
│   │   │           └── User.java
│   │   └── resources/
│   │       ├── mybatis/
│   │       │   └── context-mapper.xml
│   │       ├── application.properties
│   │       └── spring/
│   │           ├── spring-context.xml
│   │           └── spring-mvc.xml
│   └── webapp/
│       ├── WEB-INF/
│       │   ├── web.xml
│       │   └── views/
│       │       └── user.jsp
│       └── index.jsp
├── META-INF/
│   └── context.xml  ← 톰캣 리소스 설정
├── pom.xml

🔧 주요 파일 설명 & 코드 예시

1. web.xml (웹 진입점)

<web-app>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/classes/spring/spring-context.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/classes/spring/spring-mvc.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>

2. spring-context.xml (IoC 설정)

<beans>
    <context:component-scan base-package="com.example"/>
    <import resource="classpath:mybatis/context-mapper.xml"/>

    <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
        <property name="url" value="${db.url}"/>
        <property name="username" value="${db.username}"/>
        <property name="password" value="${db.password}"/>
    </bean>

    <context:property-placeholder location="classpath:application.properties"/>
</beans>

3. context-mapper.xml (MyBatis 매퍼 설정)

<beans>
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="mapperLocations" value="classpath*:mybatis/mappers/*.xml"/>
    </bean>

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.example.mapper"/>
    </bean>
</beans>

4. application.properties

db.url=jdbc:mysql://localhost:3306/test
db.username=root
db.password=1234

5. context.xml (Tomcat 리소스 설정)

<Context>
    <Resource name="jdbc/MyDB" auth="Container"
              type="javax.sql.DataSource"
              username="root"
              password="1234"
              driverClassName="com.mysql.cj.jdbc.Driver"
              url="jdbc:mysql://localhost:3306/test"
              maxTotal="100"
              maxIdle="20"/>
</Context>

6. UserMapper.java

public interface UserMapper {
    User getUserById(int id);
}

7. UserMapper.xml (mapper XML)

<mapper namespace="com.example.mapper.UserMapper">
    <select id="getUserById" parameterType="int" resultType="User">
        SELECT * FROM users WHERE id = #{id}
    </select>
</mapper>

✅ 요약: 설정 파일들의 관계

파일 역할 위치

web.xml Spring 구동, Dispatcher 설정 /WEB-INF/
spring-context.xml IoC 컨테이너 설정 (Bean, DB, 트랜잭션) /resources/spring/
spring-mvc.xml Spring MVC 설정 (ViewResolver 등) /resources/spring/
context-mapper.xml MyBatis Mapper 등록 /resources/mybatis/
application.properties DB 설정 등 외부 속성 관리 /resources/
context.xml (Tomcat) JNDI 리소스 등록 (DB 등) /META-INF/ or Tomcat conf

 

+ Recent posts