您的位置:首页 > 编程语言 > Java开发

spring boot +springMVC +mybatis整合踩过的坑

2017-07-23 11:21 387 查看
  刚刚接触spring boot 不久,目前对spring boot的最直观的理解是spring boot 通过注解的方式大大减少了spring 原有的配置文件。最近做的就是将原有的spring +springMVC+mybatis的工程改造成springboot+springMVC+mybatis。废话不多说,下面是改造过程中遇到的坑:

1.Application启动类的位置

首先Application上要添加@SpringBootApplication注解,该注解等于@Configuration + @EnableAutoConfiguration + @ComponentScan的作用。因此如要扫描文件的时候application最好放到根目录下,例如工程结构是

这样就可以扫描到application同级的包以及application所在包的子包。否则会报找不到错误。

2.application.properties

这个属性文件是spring boot启动自动加载的文件,我目前在在文件里配置了数据库的连接属性和mybatis自动扫描的属性以及端口号配置,如端口server.port=8033。

3.自动扫描mybatis

首先在application.properties中添加两个属性,第一个:mybatis.type-aliases-package,这个key的value是你的pojo所在的包的路径它的作用是配合mybatis扫描。第二个:mybatis.mapper-locations,这个key的value是扫描你的Mapper.xml文件。例如


其次需要创建一个数据源配置类


4.Maven依赖中添加dubbo依赖,dubbo自带spring依赖会和spring boot的依赖发生冲突

因为工程中用到了dubbo,所以在pom.xml文件中添加了dubbo的依赖,直接运行Application启动类可以启动,如果在Maven build中使用spring-boot:run启动则报如下异常

 Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.aop.config.internalAutoProxyCreator':
Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator]: Constructor threw exception; nested exception
is java.lang.NoSuchMethodError: org.springframework.core.CollectionFactory.createConcurrentMapIfPossible(I)Ljava/util/Map;

后来经过一系列排错,把问题定位在jar冲突上,于是又把pom.xml中的依赖逐个排查,最后发现是duboo本身自带的spring的包和spring boot 中的包冲突导致的,于是改成



项目正常启动,数据访问也一切正常。

以上是自己改造时遇到的问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: