javascript
springboot 模块引用_Spring Boot(三):SpringBoot多模块(module)项目搭建
一、前言
記錄在IDEA中怎么搭建SpringBoot多模塊(module)的過程,以一個交黨費(fèi)的項(xiàng)目為例,多模塊的目錄結(jié)構(gòu)如下:
dajia-dangfei-api:存放實(shí)體類和一些service層接口
dajia-dangfei-provider:存放dao層接口及其實(shí)現(xiàn)類和service的實(shí)現(xiàn)類
dajia-dangfei-consumer:存放controller層
dajia-dangfei-web:存放前端頁面等資源
二、搭建步驟
1、創(chuàng)建父工程
① IDEA 工具欄選擇菜單 File -> New -> Project...
② 選擇Spring Initializr,Initializr默認(rèn)選擇Default,點(diǎn)擊Next
③ 填寫輸入框,點(diǎn)擊Next
④ 這步不需要選擇直接點(diǎn)Next
⑤ 點(diǎn)擊Finish創(chuàng)建項(xiàng)目
⑥ 最終得到的項(xiàng)目目錄結(jié)構(gòu)如下
⑦ 刪除無用的.mvn目錄、src目錄、mvnw及mvnw.cmd文件,最終只留.gitignore和pom.xml
2、創(chuàng)建子模塊
① 選擇項(xiàng)目根目錄dajia-dangfei右鍵呼出菜單,選擇New -> Module
② 選擇Maven,點(diǎn)擊Next
③ 填寫ArifactId,點(diǎn)擊Next
④ 修改Module name增加橫杠提升可讀性,點(diǎn)擊Finish
⑤ 同理添加dajia-dangfei-provider、dajia-dangfei-consumer子模塊,項(xiàng)目目錄結(jié)構(gòu)如下圖
⑥添加dajia-dangfei-web的directory
⑦最終的目錄結(jié)構(gòu)如下
3、運(yùn)行項(xiàng)目
① 在dajia-dangfei-consumer中創(chuàng)建com.dajia.income包,添加入口類ConsumerApplicationMain.java,并在income包下創(chuàng)建controller包放BillOrderController.java,目錄結(jié)構(gòu)如下
ConsumerApplicationMain.java:
@SpringBootApplicationpublic classConsumerApplicationMain {public static voidmain(String[] args) {
SpringApplication.run(ConsumerApplicationMain.class,args);
}
}
因?yàn)橐ㄟ^前端訪問BillOrderController中的方法,所以引入spring-boot-starter-web的jar包,在父工程的pom文件中定義,子模塊自然可以用到
父工程dajia-dangfei的pom文件:
4.0.0
pom
dajia-dangfei-api
dajia-dangfei-provider
dajia-dangfei-consumer
org.springframework.boot
spring-boot-starter-parent
2.1.4.RELEASE
com.dajia
dajia-dangfei
0.0.1-SNAPSHOT
dajia-dangfei
Demo project for Spring Boot
1.8
org.springframework.boot
spring-boot-starter
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin
引入springboot starter web的jar包
org.springframework.boot
spring-boot-starter
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-starter-web
②BillOrderController中添加測試方法
@RestController
@RequestMapping("/billOrder")public classBillOrderController {
@RequestMapping("/test")publicString test(){return "hello World!!!";
}
}
③ 運(yùn)行ConsumerApplicationMain類中的main方法啟動項(xiàng)目,默認(rèn)端口為8080,訪問http://localhost:8080/billOrder/test得到如下效果
以上的項(xiàng)目雖然能啟動,但是模塊間的依賴關(guān)系還沒添加,下面繼續(xù)完善
4、配置模塊間的依賴關(guān)系
各個子模塊的依賴關(guān)系:dajia-dangfei-consumer依賴dajia-dangfei-provider,dajia-dangfei-provider依賴dajia-dangfei-api
①在dajia-dangfei-provider中的pom文件中添加dajia-dangfei-api依賴
dajia-dangfei-api
com.dajia
0.0.1-SNAPSHOT
②在dajia-dangfei-consumer中的pom文件中添加dajia-dangfei-provider依賴
dajia-dangfei-provider
com.dajia
0.0.1-SNAPSHOT
5、各模塊見得相互調(diào)用,從前端到數(shù)據(jù)庫
①dajia-dangfei-api中定義BillOrder實(shí)體類、BillOrderService接口
BillOrder.java
public class BillOrder implementsSerializable{private static final long serialVersionUID = -1764514095260116666L;/** 交費(fèi)單ID
**/
privateString billOrderID;/** 交費(fèi)單姓名
**/
privateString personName;/** 交費(fèi)單證件號
**/
privateString idNumber;/** 應(yīng)交金額
**/
privateBigDecimal payAmt;/** 交費(fèi)單創(chuàng)建時間
**/
privateDate createTime;
}
BillOrderService.java
public interfaceBillOrderService {/*** 根據(jù)交費(fèi)單ID查找對應(yīng)的交費(fèi)單
*@parambillOrderID
*@return
*/BillOrder getBillOrderByID(String billOrderID);
}
dajia-dangfei-api中的目錄結(jié)構(gòu)如下
②dajia-dangfei-provider中定義billOrderServiceImpl實(shí)現(xiàn)類,dao層接口,數(shù)據(jù)庫連接
數(shù)據(jù)庫連接
父工程引入mybatis-spring-boot-starter和mysql-connector-java的jar包
mysql
mysql-connector-java
5.1.34
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.1.1
resources下配置application.properties文件,主要配置兩部分。一個是數(shù)據(jù)庫的連接,一個是mybatis的mapper文件路徑
spring.datasource.url=jdbc:mysql://localhost:3306/databasezfy?useUnicode=true&characterEncoding=UTF-8&useSSL=false
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=123456mybatis.config-locations=mybatis/mybatis-config.xml
mybatis.mapper-locations=mybatis/mapper/*.xml
填寫billOrder-mapper.xml中對應(yīng)的SQL語句
/p>
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
billOrderID,personName,idNumber,payAmt,createTime
SELECTFROM billOrder
WHERE billOrderID = #{billOrderID}
dao層接口,@Repository注解是為了在serviceImpl中可以同過@Autowired的方式注入BillOrderMapper
@Repositorypublic interfaceBillOrderMapper {/*** 根據(jù)交費(fèi)單ID查找對應(yīng)的交費(fèi)單
*@parambillOrderID
*@return
*/BillOrder getBillOrderByBillOrderID(String billOrderID);
}
billOrderServiceImpl實(shí)現(xiàn)類,@Service注解是為了在controller中可以同過@Autowired的方式注入BillOrderService
@Servicepublic class BillOrderServiceImpl implementsBillOrderService{
@AutowiredprivateBillOrderMapper billOrderMapper;
@OverridepublicBillOrder getBillOrderByID(String billOrderID) {returnbillOrderMapper.getBillOrderByBillOrderID(billOrderID);
}
}
③dajia-dangfei-consumer中通過調(diào)用service中的方法實(shí)現(xiàn)查詢
@RestController
@RequestMapping("/billOrder")public classBillOrderController {
@AutowiredprivateBillOrderService billOrderService;
@RequestMapping("/getBillOrderByID")publicBillOrder getBillOrderByID(){return billOrderService.getBillOrderByID("1");
}
}
運(yùn)行ConsumerApplicationMain類中的main方法啟動項(xiàng)目,會發(fā)現(xiàn)報錯
Description:
Field billOrderMapper in com.dajia.income.service.impl.BillOrderServiceImpl required a bean of type 'com.dajia.income.dao.BillOrderMapper' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
Action:
Consider defining a bean of type 'com.dajia.income.dao.BillOrderMapper' in your configuration.
原因:@Repository注解是Spring的,Spring在掃描注解時,取消了掃描抽象類和接口,所以無法找到你用@reponsitory注解的dao接口。兩種方法解決:
一是用@Mapper注解替代@Repository注解,二是在啟動項(xiàng)目時指定要掃描的包,我們這里使用第二種
@SpringBootApplication
@MapperScan("com.dajia.income.dao")public classConsumerApplicationMain {public static voidmain(String[] args) {
SpringApplication.run(ConsumerApplicationMain.class,args);
}
}
重新啟動,訪問http://localhost:8080/billOrder/getBillOrderByID得到如下效果
至此,一個簡單的SpringBoot+Mybatis多模塊項(xiàng)目已經(jīng)搭建完畢,我們也通過啟動項(xiàng)目調(diào)用接口驗(yàn)證其正確性。
總結(jié)
以上是生活随笔為你收集整理的springboot 模块引用_Spring Boot(三):SpringBoot多模块(module)项目搭建的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [附源码]java毕业设计学生互评的在线
- 下一篇: objective-c常见类型%z