记录一次使用eclipse手动搭建Spring+SpringMVC+Mybatis集成框架

平时一直都是直接拷框架进行开发使用,最近重温了一下SSM框架的搭建,写在这里给自己当个提醒,欢迎各位补充共同学习,大神勿喷。

1.理解

spring是个开源的框架,是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架。对于IOC的理解,假如spring是一个大工厂,那么对于产品的创建和维护,都由它来管控的,这里的产品就相当于所有对象的创建和依赖关系的维护,比如说接下来要集成的springmvc和mybatis,都是配置到spring的配置文件里,统一使用。关于AOP,专业学名是面对切面编程,是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。我的理解是它可以把散落在程序中的公共部分提取出来,做成一个切面类,这样利于重用代码,一旦涉及到该功能的需求发生变化,只要修改这一个切面类的代码就可以了,我实际开发中使用到了的,是在数据库的连接以及事务处理上。

2.准备搭建的spring系列核心jar包,还有xml约束(我是使用eclipse搭建的)

第一步当然是导jar包啦,下面会带上附件,此处不多加描述

3.搭建spring

spring本质其实是一个listener,所以先在web.xml文件中进行spring的配置,如下:

<!-- 加载spring的监听listener -->
  <listener>
  	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  
  <!-- 加载spring的配置文件 -->
  <context-param>
  	<param-name>contextConfigLocation</param-name>
  	<param-value>classpath:applicationContext*.xml</param-value>
  </context-param>

spring的配置文件,在src目录下新建applicationContext.xml,项目结构如图:
图1
这个时候就可以运行一下程序,看看spring的配置有没有报错,没有报错的话,继续往下配置springmvc

4.搭建springMVC

springmvc的核心,是一个叫DispatcherServlet的servlet,所以同样在web.xml中配置,也就是spring的ioc,将springmvc集成到spring使用,如下:

<!-- 加载springmvc(配置springmvc核心控制器) -->
  <servlet>
  	<servlet-name>springmvc</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	<!-- 加载springmvc的配置文件 -->
  	<init-param>
  		<param-name>contextConfigLocation</param-name>
  		<param-value>classpath:springmvc.xml</param-value>
  	</init-param>
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>springmvc</servlet-name>
  	<url-pattern>/</url-pattern>
  </servlet-mapping>

这里同样需要新建springmvc.xml文件,文件中需要导入mvc和context的约束,然后可以配置打开注解等操作:

    <!-- 打开注解驱动 -->
	<mvc:annotation-driven/>
	
	<!-- 扫描包 -->
	<context:component-scan base-package="**"></context:component-scan>

到这里就可以新建controller测试一下了,因为springmvc主要用于前后台交互,用来处理用户请求和做出回应。

5.集成Mybatis

mybatis,一个实现了orm思想的持久化框架

  • O(对象模型):实体对象,即我们在程序中根据数据库表结构建立的一个个实体Entity
  • R(关系型数据库的数据结构):即我们建立的数据库表
  • M(映射):从R(数据库)到O(对象模型)的映射,可通过XML文件映射

一句话简单概括就是,把对实体类的操作就是对数据库表的操作
接下来开始集成mybatis。
1.首先创建数据库连接池,这里选择很多,可以用c3p0,BasicDataSource,阿里云的连接池等,看具体情况,此处使用BasicDataSource(集成在applicationContext.xml中,需要导入aop和tx的约束)

<!--数据库连接-->  
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"  
        destroy-method="close">  
        <property name="driverClassName" value="${driver}" />  
        <property name="url" value="${url}" />  
        <property name="username" value="${username}" />  
        <property name="password" value="${password}" />  
        <!-- 初始化连接大小 -->  
        <property name="initialSize" value="${initialSize}"></property>  
        <!-- 连接池最大数量 -->  
        <property name="maxActive" value="${maxActive}"></property>  
        <!-- 连接池最大空闲 -->  
        <property name="maxIdle" value="${maxIdle}"></property>  
        <!-- 连接池最小空闲 -->  
        <property name="minIdle" value="${minIdle}"></property>  
        <!-- 获取连接最大等待时间 -->  
        <property name="maxWait" value="${maxWait}"></property>  
    </bean>

使用${}替换符,用读取文件的模式读取数据库信息:

    <!-- 引入配置文件 -->  
    <bean id="propertyConfigurer"  
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
        <property name="location" value="classpath:jdbc.properties" />  
    </bean>

配置sqlsessionfactory(主要是用来执行sql的),以及使用aop定义和管理事务:

    <!-- 配置sqlsessionfactory -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<!-- 注入datasource -->
		<property name="dataSource" ref="dataSource"></property>
		<!-- 自动扫描mapping.xml文件 -->  
        <property name="mapperLocations" value="classpath:mapping/*.xml"></property>
	</bean>


	<!-- 使用aop定义和管理事务 -->
	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" />
	</bean>
	<aop:config>
		<aop:pointcut expression="execution(* service.impl.*.*(..))"
			id="txAop" />
		<aop:advisor advice-ref="txAdvice" pointcut-ref="txAop" />
	</aop:config>

	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="save*" propagation="REQUIRED" />
			<tx:method name="update*" propagation="REQUIRED" />
			<tx:method name="delete*" propagation="REQUIRED" />
			<tx:method name="*" read-only="true" />
		</tx:attributes>
	</tx:advice>

	<!-- DAO接口所在包名,Spring会自动查找其下的类 -->  
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
        <property name="basePackage" value="Dao" />  
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>  
    </bean>

至此,差不多就搭建完毕了,完善controller,entity,service,serviceImpl,Dao等mvc三层架构,搭建个前台页面测试一下:
在这里插入图片描述
在这里插入图片描述
源码地址
链接:https://pan.baidu.com/s/1n-c0aryI2fHXw185ApAxLg
提取码:tkik
复制这段内容后打开百度网盘手机App,操作更方便哦

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值