前言:本过程从0开始,先是导入最核心的jar包,然后随着ssm中的功能实现,打包===>启动===>报错,一步步解决问题,增加额外的必须的jar包来熟悉ssm

1、导包(核心包)

mybatis:mybatis

msql:mysql-connector-java

spring:spring、spring-core、spring-web、spring-context、spring-beans

spring-mvc:spring-webmvc

mybatis-spring:mybatis-spring

2、配置文件

spring-mvc.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:mvc="http://www.springframework.org/schema/mvc"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  7. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
  8. http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
  9. <!-- 配置成拦截所有的请求,会有效@RequestMapper,如果是配置成*.do则无效 -->
  10. <mvc:annotation-driven />
  11. <!-- 扫描指定包下含有特定注解的类 -->
  12. <context:component-scan base-package="com.test.*"/>
  13. <!-- 静态资源请求,启动容器的默认的handler来处理 -->
  14. <mvc:default-servlet-handler/>
  15. <!-- 试图解析器 -->
  16. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  17. <property name="prefix" value="/" />
  18. <property name="suffix" value=".jsp" />
  19. </bean>
  20. </beans>

spring-mybatis.xml

  1. <?xml version ="1.0" encoding = "utf-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  6. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
  7. <!-- 数据库连接开始 -->
  8. <context:property-placeholder location="/WEB-INF/classes/datasource.properties"/>
  9. <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
  10. <property name="driverClassName" value="${driver}"/>
  11. <property name="username" value="${jdbc_username}"/>
  12. <property name="url" value="${url}"/>
  13. <property name="password" value="${pwd}"/>
  14. </bean>
  15. <!-- 数据库连接结束 -->
  16. </beans>

使用的context、mvc、tx、aop……标签时,需加上相应的协议

3、完善过程与问题记录

1)java.lang.NullPointerException

org.springframework.core.SerializableTypeWrapper$TypeProxyInvocationHandler.invoke(SerializableTypeWrapper.java:239)
问题:maven的传递依赖导致spring 4.2与spring 2.5包冲突,解决,在pom加入如下依赖,去掉spring依赖。
  1. <dependency>
  2. <groupId>com.alibaba</groupId>
  3. <artifactId>dubbo</artifactId>
  4. <version>2.5.3</version>
  5. <exclusions>
  6. <exclusion>
  7. <artifactId>spring</artifactId>
  8. <groupId>org.springframework</groupId>
  9. </exclusion>
  10. </exclusions>
  11. </dependency>

2)增加mybatis数据库操作,在spring-mybatis.xml增加配置

  1. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  2. <property name="dataSource" ref="dataSource" />
  3. <property name="configLocation" value="classpath:mapperAlias.xml" />
  4. </bean>
  5.  
  6. <!-- DAO接口所在包名,Spring会自动查找其下的类 -->
  7. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  8. <property name="basePackage" value="com.test.dao" />
  9. <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
  10. </bean>

  2.1)打包启动 错:java.lang.NoClassDefFoundError: org/springframework/dao/support/DaoSupport,增加spring-tx依赖

  2.2)即上之后 打包启动 错误信息有java.lang.NoClassDefFoundError: org/springframework/jdbc/datasource/TransactionAwareDataSourceProxy 增加spring-jdbc的依赖

  2.3)单元测试   nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.csdn.training.service.BeanB] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. 原因是缺少bean的依赖注入。

参考:http://blog.csdn.net/jiangchao858/article/details/51586515

3)事务管理,在spring-mybatis增加如下配置

  1.   <!-- 事务管理 -->
  2. <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  3. <property name="dataSource" ref="dataSource" />
  4. </bean>
  5. <tx:advice id="advice" transaction-manager="transactionManager">
  6. <tx:attributes>
  7. <tx:method name="*" read-only="true" propagation="REQUIRED"/>
  8. </tx:attributes>
  9. </tx:advice>
  10. <aop:config>
  11. <aop:pointcut expression="execution(* com.ljh.dao.*.*(..))" id="aopTest"/>
  12. <aop:advisor pointcut-ref="aopTest" advice-ref="advice" />
  13. </aop:config>

效果是为com.ljh.dao包下所有接口中的所有方法,设置只读的事务。

  

·

SSM 记录的更多相关文章

  1. 记录SSM框架项目迁移SpringBoot框架-----pom.xml的迁移

    第一步:迁移pom.xml文件(去除spring相关的依赖) SSM中的pom: <project xmlns="http://maven.apache.org/POM/4.0.0&q ...

  2. SSM 整合 quartz JDBC方式实现job动态增删改查记录

    虽然网上有很多资料,但是都不够系统,本文记录下自己的整合过程. 1. 搭建一个SSM项目,此处略. 2. 按照quartz官方要求,建立quartz相关的数据库和表,相关sql语句如下: /* Nav ...

  3. maven ssm 编译异常记录:

    maven ssm 编译异常记录: javax.servlet.jsp 解决: 清除 tomacat libraries 修改 pom 文件 <dependency> <groupI ...

  4. ssm 项目记录用户操作日志和异常日志

    借助网上参考的内容,写出自己记录操作日志的心得!! 我用的是ssm项目使用aop记录日志:这里用到了aop的切点 和 自定义注解方式: 1.建好数据表: 数据库记录的字段有: 日志id .操作人.操作 ...

  5. 天猫SSM项目学习记录(一)----第一个相对完整的SSM项目

    来源:  http://how2j.cn/k/tmall_ssm/tmall_ssm-1516/1516.html?p=78908 目的:记录一个相对完整的SSM项目模板 1.工具:idea2018商 ...

  6. 使用 ssm 实现登录日志记录

    使用 ssm 实现登录日志记录 学习总结 一.基础准备 1. 实现效果 2. 数据表 2.1 登陆日志信息表 2.3 员工表 二.代码实现 1. SysLogLogin 实体类 2. LogAspec ...

  7. SSM获取表单数据插入数据库并返回插入记录的ID值

    以下指示插入操作以及获取记录值的ID的部分操作代码!!! 首先是简单的表单实现 <%@ page language="java" contentType="text ...

  8. 记录搭建ssm项目

    搞java也快3年了,搭建一个ssm居然有点吃力. 参考链接:https://blog.csdn.net/gebitan505/article/details/44455235/ 环境准备:jdk8. ...

  9. SSM迁移到Springboot记录

    日志问题 Exception in thread "main" java.lang.IllegalArgumentException: LoggerFactory is not a ...

随机推荐

  1. Trie树的二三事QWQ

    写在前面 Trie,又称字典树,是一种用于实现字符串快速检索的多叉树结构.Trie的每个结点都拥有若干字符指针,若在插入或检索字符串时扫描到一个字符c,就沿着当前节点的c这个字符指针,走向该指针指向的 ...

  2. activiti的springboot模块

    目标: springboot 下 使用activiti,搭建微服务,并且使用自己的用户与组 版本 activiti version 5.22.0spring boot version 1.5.1 主要 ...

  3. win10 激活工具 Re-LoaderByR@1n.exe

    名字叫 Re-LoaderByR@1n.exe 无广告, https://pan.baidu.com/s/1MBix1cZxKpUTA6MUgL7uLQ 如果变成教育版,可以用以下激活码变成专业版:W ...

  4. android开源框架讲解 一 butterknif

    2019年3月16日 12:49:38 一 直接进入主题 如何配置ButterKnif 我用的是AS3.1.2 应该跟版本关系不大 1.1 下载安装Android ButterKnif Zelezny ...

  5. 在python中使用print()时,raw write()返回无效的长度:OSError: raw write() returned invalid length 254 (should have been between 0 and 127)

    写出一个不是code的bug,很烦恼,解决了挺长时间,都翻到外文来看,不过还是解决了,只尝试了一种简单可观的方法,希望对大家有用 我正在使用Django与Keras(tensorflow)来训练一个模 ...

  6. ubuntu的磁盘扩容

    前言:以前项目的人给ubuntu虚拟机分配磁盘空间走的默认,导致后期/根和swap空间跟不上需求,需要扩容 流程如下: 1.先添加块硬盘,命令行输入fdisk -l,会发现多了个/dev/sdb(vd ...

  7. php无限极分类方法

    仅供参考: //控制器 $data = M('category')->select(); $datas = D('Category')->_getTree($data, 0,0,TRUE) ...

  8. Redis数据结构之quicklist

    本文及后续文章,Redis版本均是v3.2.8 我们在使用Redis对外暴露的list数据结构时,给我们带来极大的便利性.其底层实现所依赖的内部数据结构就是quicklist. 我们先来回忆下list ...

  9. open_basedir php授权目录设置

    php为了安全性考虑,有一项 open_basedir 的设置.根据你web服务器环境,open_basedir可以在几个地方设置. 首先 在php.ini中配置. ;open_basedir = 如 ...

  10. python实现Hbase

    1. 下载thrift 作用:翻译python语言为hbase语言的工具 2. 运行时先启动hbase 再启动thrift,最后在pycharm中通过happybase包连接hbase 在hbase目 ...