IDEA maven构建springboot父子工程 [避免:BindingException]
工具:IDEA2020.2.3版本在构建大型maven项目时,通常采用的工程类型,基本为聚合工程,我们公司也一样,决定引入springboot微服务架构,采用idea+maven+springboot的方式构建。由于springboot搭建聚合工程,与传统的spring+maven构建聚合工程,方式有部分出入,刚开始,搭建了几次,都没成功,经过多次尝试,最后搭建成功了,这里一方面,分享一下自己在搭
聚合工程: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 这四个文件全部删除
如图:
-
- 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
十四、测试
更多推荐
所有评论(0)