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 |
'[JAVA]JAVA실무' 카테고리의 다른 글
[JAVA]System.out.println VS Logger (1) | 2025.04.22 |
---|---|
[JAVA]실무 try-catch exception 처리 (0) | 2025.04.21 |
[JAVA]Java exception 종류 예시 (0) | 2025.04.21 |
[JAVA]보안취약점 조치 예시(기초) PMD (0) | 2025.03.22 |
[JAVA]보안취약점 분석 PMD 사용방법 (0) | 2025.03.22 |