IDEA maven构建springboot父子工程 [避免:BindingException]

聚合工程:IDEA2020.3+springboot + mybatis + oracle + redis 踩过的坑

springboot版本:2.4.1

[更新]:处理聚合工程 springboot+mybatis 映射报错:

绑定异常org.apache.ibatis.binding.BindingException

详细参考[步骤:1.3]

在构建大型maven项目时,通常采用的工程类型,基本为聚合工程,我们公司也一样,决定引入springboot微服务架构,采用idea+maven+springboot的方式构建。由于springboot搭建聚合工程,与传统的spring+maven构建聚合工程,方式有部分出入,刚开始,搭建了几次,都没成功,经过多次尝试,最后搭建成功了,这里一方面,分享一下自己在搭建springboot聚合工程的注意事项,另一方面,给自己保留搭建资料,以免以后忘记了,再踩坑,具体搭建方法如下:

一:通过spring initializr 创建一个父子工程 例如:父工程admin,

1.1 将admin(父工程)下的 src 、.mvn、mvnw、mvnw.cmd 这四个文件全部删除

如图:

    1. 2在父工程(admin)中,保留springboot 的<parent></parent>配置,修改打包方式<packaging>为”pom”,同时,在<properties>中,统一jdk编码为1.8,统一springboot编码为2.4.1
<modelVersion>4.0.0</modelVersion>
<groupId>com.uechv.eoffice</groupId>
<artifactId>admin</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>admin</name>
<packaging>pom</packaging>
   <modules>
      <module>beans</module>
      <module>common</module>
      <module>interfaces</module>
      <module>dao</module>
      <module>service</module>
      <module>portal</module>
   </modules>
 <parent>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-parent</artifactId>
     <version>2.4.1</version>
</parent>

 

<properties>
    <java.version>1.8</java.version>
    <spring.version>2.4.1</spring.version>
</properties>

删除父工程的<build></build>

1.3  手动配置依赖管理项(<dependencyManagement>),在构建聚合工程时,maven并不会给我们设定依赖管理项,得由我们自己配置:注意这一个配置:

 <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>uechv-admin</artifactId>
       <version>${project.version}</version>
 </dependency>

如果这一个配置缺少,那么springboot会导致mybatis无法识别到入口项目resources下的mapper.xml从而报错:

绑定异常org.apache.ibatis.binding.BindingException

<dependencyManagement>
<dependencies>
   <dependency>
            <groupId>com.oracle.database.jdbc</groupId>
            <artifactId>ojdbc6</artifactId>
            <version>${oracle.version}</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>${druid.version}</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>admin</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId></groupId>
            <artifactId>common</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId></groupId>
            <artifactId>interface</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId></groupId>
            <artifactId>dao</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId></groupId>
            <artifactId>service</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId></groupId>
            <artifactId>entity</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId></groupId>
            <artifactId>portal</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.rockyang</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>${spring-mybatis.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <version>${spring.version}</version>
            <scope>test</scope>
        </dependency>
</dependencies>
</dependencyManagement>

二、 创建子工程时,直接在admin工程上右键 > new > module 创建子模块,选择父工程为:admin,这样,会在父工程中自动创建,并引入子模块<modules><module></module><modules>

【注意】:在搭建非启动项子模块时,采用maven方式搭建子模

三、创建其他的common、dao、service非pom启动模块时,跟步骤二一样,采用maven构建

四、创建启动项,可以以maven的方式创建最后的启动项模块,得自己手动创建xxxApplication.java 类

 

五、<build>引入:在最后启动项portal/web子模块中引入<build>,这样打包时,可以不用一个一个的打包,一次性打包处理:即可成功

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>${spring.version}</version>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.12.4</version>
            <configuration>
                <skipTests>true</skipTests>
            </configuration>
        </plugin>
    </plugins>
</build>

 

六、创建pojo实体类

七、创建dao层

八、创建service与serviceImpl

九、在启动项创建测试类

十、配置扫描注解MapperScan 和在添加 全局扫描包 scanBasePackages 

十一、创建测试方法,执行测试:

十二、在启动项子模块中配置 映射文件 UserDao.xml

十三、编写Controller

十四、测试

 

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值