在SSM(Spring + SpringMVC + MyBatis)框架中,配置文件是项目的核心组成部分,用于定义框架的行为和组件之间的关系。以下是SSM框架中常见的配置文件及其作用和配置要点。
1. Spring配置文件
Spring配置文件主要用于管理Bean的创建、依赖注入、事务管理等。通常命名为applicationContext.xml
,位于src/main/resources/spring
目录下。
核心配置
-
Bean扫描:指定Spring扫描的包路径,以便自动发现注解(如
@Service
、@Repository
等)。xml复制
<context:component-scan base-package="com.example.project" />
-
数据源配置:定义数据库连接的配置信息。
xml复制
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.cj.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/your_database" /> <property name="username" value="root" /> <property name="password" value="password" /> </bean>
-
事务管理:配置事务管理器和事务增强。
xml复制
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <tx:annotation-driven transaction-manager="transactionManager" />
2. SpringMVC配置文件
SpringMVC配置文件主要用于管理Web相关的配置,如请求映射、视图解析器等。通常命名为spring-mvc.xml
,位于src/main/resources/spring
目录下。
核心配置
-
视图解析器:配置JSP视图解析器。
xml复制
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean>
-
注解驱动:启用SpringMVC的注解支持。
xml复制
<mvc:annotation-driven />
-
静态资源访问:配置静态资源的访问路径。
xml复制
<mvc:resources location="/static/" mapping="/static/**" />
3. MyBatis配置文件
MyBatis配置文件主要用于定义MyBatis的行为,如数据库连接池、SQL映射文件等。通常命名为mybatis-config.xml
,位于src/main/resources/mybatis
目录下。
核心配置
-
数据库环境:配置数据库连接信息。
xml复制
<environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="com.mysql.cj.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/your_database" /> <property name="username" value="root" /> <property name="password" value="password" /> </dataSource> </environment> </environments>
-
映射文件:指定Mapper文件的位置。
xml复制
<mappers> <mapper resource="com/example/project/mapper/UserMapper.xml" /> </mappers>
4. MyBatis Mapper文件
Mapper文件用于定义SQL语句和Java对象之间的映射关系。通常位于src/main/resources/mybatis
目录下,文件名与Mapper接口相对应。
示例
xml复制
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.project.mapper.UserMapper">
<select id="getUserById" parameterType="int" resultType="com.example.project.entity.User">
SELECT * FROM users WHERE id = #{id}
</select>
</mapper>
5. 整合Spring和MyBatis
在Spring配置文件中,需要配置MyBatis的SqlSessionFactory和Mapper扫描。
配置SqlSessionFactory
xml复制
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:mybatis/mybatis-config.xml" />
<property name="mapperLocations" value="classpath:mybatis/mapper/*.xml" />
</bean>
Mapper扫描
xml复制
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.example.project.mapper" />
</bean>
6. web.xml配置
web.xml
是Web应用的配置文件,用于定义Servlet和过滤器等。
SpringMVC的DispatcherServlet
xml复制
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath: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>
Spring的ContextLoaderListener
xml复制
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/applicationContext.xml</param-value>
</context-param>
7. 整合步骤
-
创建项目结构:按照SSM项目的目录结构创建项目。
-
添加依赖:在
pom.xml
中添加Spring、SpringMVC、MyBatis等依赖。 -
配置文件:编写
applicationContext.xml
、spring-mvc.xml
、mybatis-config.xml
等配置文件。 -
编写代码:实现Controller、Service、DAO和实体类。
-
运行项目:启动项目,测试功能。
通过以上配置,SSM框架可以实现一个完整的Web应用,具备良好的分层结构和清晰的职责划分。
SSM项目(Spring + SpringMVC + MyBatis)的整体结构通常基于MVC设计模式,分为四层:视图层(View)、控制层(Controller)、业务逻辑层(Service)和数据访问层(DAO)。以下是SSM项目整体结构的详细说明:
1. 项目目录结构
一个典型的SSM项目通常采用Maven项目结构,其目录结构如下:
复制
project-name/
|-- src/
| |-- main/
| | |-- java/
| | | |-- controller/ (控制器层)
| | | |-- dao/ (数据访问层)
| | | | |-- mapper/ (MyBatis映射接口)
| | | |-- entity/ (实体类)
| | | |-- service/ (业务逻辑层)
| | | |-- util/ (工具类)
| | |-- resources/
| | | |-- mybatis/ (MyBatis配置文件和映射文件)
| | | |-- spring/ (Spring配置文件)
| | |-- webapp/
| | | |-- WEB-INF/
| | | | |-- jsp/ (视图模板)
| | | | |-- lib/ (依赖库)
| | | | |-- web.xml (Web配置文件)
| | | |-- static/ (静态资源文件夹:CSS、JS等)
| | | |-- images/ (图片目录)
| |-- test/
| | |-- java/
| | |-- resources/
|-- target/
|-- pom.xml
2. 四层架构
SSM项目的核心是四层架构,每层都有明确的职责:
(1)视图层(View)
-
职责:负责显示数据和接收用户输入,通常由JSP页面、HTML页面或前端框架(如Vue.js)组成。
-
位置:
src/main/webapp/WEB-INF/jsp
或其他静态资源目录。
(2)控制层(Controller)
-
职责:接收用户请求,调用业务逻辑层(Service)处理请求,并将结果返回给视图层。
-
位置:
src/main/java/controller
。 -
实现方式:使用SpringMVC框架,通过注解(如
@Controller
)定义控制器。
(3)业务逻辑层(Service)
-
职责:封装业务逻辑,调用数据访问层(DAO)完成数据操作,为控制层提供数据支持。
-
位置:
src/main/java/service
。 -
实现方式:使用Spring框架管理业务对象,通过接口和实现类分离业务逻辑。
(4)数据访问层(DAO)
-
职责:负责与数据库交互,实现数据的增删改查操作。
-
位置:
src/main/java/dao
和src/main/resources/mybatis
。 -
实现方式:使用MyBatis框架,通过Mapper接口和Mapper.xml文件定义SQL操作。
3. 各层之间的关系
-
DAO层:独立开发,提供数据访问接口,由Spring配置管理。
-
Service层:调用DAO层接口,封装业务逻辑,为Controller层提供服务。
-
Controller层:接收用户请求,调用Service层方法,将结果返回给View层。
-
View层:与Controller层紧密结合,展示数据给用户。
4. 框架的作用
-
Spring:作为整个项目的“粘合剂”,负责对象的创建、初始化和依赖注入(IoC),同时提供事务管理、AOP等功能。
-
SpringMVC:负责请求的转发和视图管理,通过DispatcherServlet处理用户请求。
-
MyBatis:作为数据持久化框架,简化数据库操作,通过映射文件(Mapper.xml)实现SQL语句的配置。
这种分层结构使得SSM项目具有良好的可维护性和扩展性,各层之间低耦合,便于开发和维护。