工地被强伦系列小说最新章节_丰满少妇被猛烈进入高清在线观看_九九精品99久久久香蕉_久色精品视频_男女互被舔69式免费视频_99精品久久免费看蜜臀剧情介绍_911精产国品一二三区在线观看 _边做饭边被躁高h小_国产gay男性玩奴sm_死神来了9在线观看完整版国语

SpringBoot+Mybatis 多模塊項(xiàng)目搭建教程

2020-06-22

一、前言

最近公司項(xiàng)目準(zhǔn)備開始重構(gòu),框架選定為SpringBoot+Mybatis,本篇主要記錄了在IDEA中搭建SpringBoot多模塊項(xiàng)目的過程。

1、開發(fā)工具及系統(tǒng)環(huán)境

IDE:IntelliJ IDEA 2018.2

系統(tǒng)環(huán)境:mac OSX

2、項(xiàng)目目錄結(jié)構(gòu)

biz層:業(yè)務(wù)邏輯層

dao層:數(shù)據(jù)持久層

web層:請(qǐng)求處理層

二、搭建步驟

1、創(chuàng)建父工程

IDEA 工具欄選擇菜單 File -> New -> Project...

1.png選擇Spring Initializr,Initializr默認(rèn)選擇Default,點(diǎn)擊Next

2.png


填寫輸入框,點(diǎn)擊Next

3.png


這步不需要選擇直接點(diǎn)Next

4.png


點(diǎn)擊Finish創(chuàng)建項(xiàng)目

5.png


最終得到的項(xiàng)目目錄結(jié)構(gòu)如下

6.png


刪除無(wú)用的.mvn目錄、src目錄、mvnw及mvnw.cmd文件,最終只留.gitignore和pom.xml

7.png


2、創(chuàng)建子模塊

選擇項(xiàng)目根目錄beta右鍵呼出菜單,選擇New -> Module

8.png


選擇Maven,點(diǎn)擊Next

填寫ArifactId,點(diǎn)擊Next

9.png


修改Module name增加橫杠提升可讀性,點(diǎn)擊Finish

10.png


同理添加【beta-dao】、【beta-web】子模塊,最終得到項(xiàng)目目錄結(jié)構(gòu)如下圖

11.png


3、運(yùn)行項(xiàng)目

在beta-web層創(chuàng)建com.yibao.beta.web包(注意:這是多層目錄結(jié)構(gòu)并非單個(gè)目錄名,com >> yibao >> beta >> web)并添加入口類BetaWebApplication.java

package com.yibao.beta.web;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;

/** * @author linjian * @date 2018/9/29 */@SpringBootApplicationpublic class BetaWebApplication {

public static void main(String[] args) { SpringApplication.run(BetaWebApplication.class, args); }}

在com.yibao.beta.web包中添加controller目錄并新建一個(gè)controller,添加test方法測(cè)試接口是否可以正常訪問

package com.yibao.beta.web.controller;

import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;

/** * @author linjian * @date 2018/9/29 */@RestController@RequestMapping("demo")public class DemoController {

@GetMapping("test") public String test() { return "Hello World!"; }}

運(yùn)行BetaWebApplication類中的main方法啟動(dòng)項(xiàng)目,默認(rèn)端口為8080,訪問http://localhost:8080/demo/test得到如下效果

12.png


以上雖然項(xiàng)目能正常啟動(dòng),但是模塊間的依賴關(guān)系卻還未添加,下面繼續(xù)完善

4、配置模塊間的依賴關(guān)系

各個(gè)子模塊的依賴關(guān)系:biz層依賴dao層,web層依賴biz層

父pom文件中聲明所有子模塊依賴(dependencyManagement及dependencies的區(qū)別自行查閱文檔)

com.yibao.beta beta-biz ${beta.version} com.yibao.beta beta-dao ${beta.version} com.yibao.beta beta-web ${beta.version}

其中${beta.version}定義在properties標(biāo)簽中

在beta-web層中的pom文件中添加beta-biz依賴

com.yibao.beta beta-biz

在beta-biz層中的pom文件中添加beta-dao依賴

com.yibao.beta beta-dao

5、web層調(diào)用biz層接口測(cè)試

在beta-biz層創(chuàng)建com.yibao.beta.biz包,添加service目錄并在其中創(chuàng)建DemoService接口類

package com.yibao.beta.biz.service;

/** * @author linjian * @date 2018/9/29 */public interface DemoService {

String test();}

package com.yibao.beta.biz.service.impl;

import com.yibao.beta.biz.service.DemoService;import org.springframework.stereotype.Service;

/** * @author linjian * @date 2018/9/29 */@Servicepublic class DemoServiceImpl implements DemoService {

@Override public String test() { return "test"; }}

DemoController通過@Autowired注解注入DemoService,修改DemoController的test方法使之調(diào)用DemoService的test方法,最終如下所示

package com.yibao.beta.web.controller;

import com.yibao.beta.biz.service.DemoService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;

/** * @author linjian * @date 2018/9/29 */@RestController@RequestMapping("demo")public class DemoController {

@Autowired private DemoService demoService;

@GetMapping("test") public String test() { return demoService.test(); }}

再次運(yùn)行BetaWebApplication類中的main方法啟動(dòng)項(xiàng)目,發(fā)現(xiàn)如下報(bào)錯(cuò)

***************************APPLICATION FAILED TO START***************************

Description:

Field demoService in com.yibao.beta.web.controller.DemoController required a bean of type 'com.yibao.beta.biz.service.DemoService' that could not be found.

Action:

Consider defining a bean of type 'com.yibao.beta.biz.service.DemoService' in your configuration.

原因是找不到DemoService類,此時(shí)需要在BetaWebApplication入口類中增加包掃描,設(shè)置@SpringBootApplication注解中的scanBasePackages值為com.yibao.beta,最終如下所示

package com.yibao.beta.web;

import org.mybatis.spring.annotation.MapperScan;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;

/** * @author linjian * @date 2018/9/29 */@SpringBootApplication(scanBasePackages = "com.yibao.beta")@MapperScan("com.yibao.beta.dao.mapper")public class BetaWebApplication {

public static void main(String[] args) { SpringApplication.run(BetaWebApplication.class, args); }}

設(shè)置完后重新運(yùn)行main方法,項(xiàng)目正常啟動(dòng),訪問http://localhost:8080/demo/test得到如下效果:

13.png


6、集成Mybatis

父pom文件中聲明mybatis-spring-boot-starter及l(fā)ombok依賴

dependencyManagement> org.mybatis.spring.boot mybatis-spring-boot-starter 1.3.2 org.projectlombok lombok 1.16.22

在beta-dao層中的pom文件中添加上述依賴

org.mybatis.spring.boot mybatis-spring-boot-starter mysql mysql-connector-java org.projectlombok lombok

在beta-dao層創(chuàng)建com.yibao.beta.dao包,通過mybatis-genertaor工具生成dao層相關(guān)文件(DO、Mapper、xml),存放目錄如下

14.png


applicatio.properties文件添加jdbc及mybatis相應(yīng)配置項(xiàng)

spring.datasource.driverClassName = com.mysql.jdbc.Driverspring.datasource.url = jdbc:mysql://192.168.1.1/test?useUnicode=true&characterEncoding=utf-8spring.datasource.username = testspring.datasource.password = 123456

mybatis.mapper-locations = classpath:mybatis/*.xmlmybatis.type-aliases-package = com.yibao.beta.dao.entity

DemoService通過@Autowired注解注入U(xiǎn)serMapper,修改DemoService的test方法使之調(diào)用UserMapper的selectByPrimaryKey方法,最終如下所示

package com.yibao.beta.biz.service.impl;

import com.yibao.beta.biz.service.DemoService;import com.yibao.beta.dao.entity.UserDO;import com.yibao.beta.dao.mapper.UserMapper;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;

/** * @author linjian * @date 2018/9/29 */@Servicepublic class DemoServiceImpl implements DemoService {

@Autowired private UserMapper userMapper;

@Override public String test() { UserDO user = userMapper.selectByPrimaryKey(1); return user.toString(); }}

再次運(yùn)行BetaWebApplication類中的main方法啟動(dòng)項(xiàng)目,發(fā)現(xiàn)如下報(bào)錯(cuò)

APPLICATION FAILED TO START***************************

Description:

Field userMapper in com.yibao.beta.biz.service.impl.DemoServiceImpl required a bean of type 'com.yibao.beta.dao.mapper.UserMapper' that could not be found.

Action:

Consider defining a bean of type 'com.yibao.beta.dao.mapper.UserMapper' in your configuration.

原因是找不到UserMapper類,此時(shí)需要在BetaWebApplication入口類中增加dao層包掃描,添加@MapperScan注解并設(shè)置其值為com.yibao.beta.dao.mapper,最終如下所示

package com.yibao.beta.web;

import org.mybatis.spring.annotation.MapperScan;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;

/** * @author linjian * @date 2018/9/29 */@SpringBootApplication(scanBasePackages = "com.yibao.beta")@MapperScan("com.yibao.beta.dao.mapper")public class BetaWebApplication {

public static void main(String[] args) { SpringApplication.run(BetaWebApplication.class, args); }}

設(shè)置完后重新運(yùn)行main方法,項(xiàng)目正常啟動(dòng),訪問http://localhost:8080/demo/test得到如下效果

15.png


至此,一個(gè)簡(jiǎn)單的SpringBoot+Mybatis多模塊項(xiàng)目已經(jīng)搭建完畢,我們也通過啟動(dòng)項(xiàng)目調(diào)用接口驗(yàn)證其正確性。

三、總結(jié)

一個(gè)層次分明的多模塊工程結(jié)構(gòu)不僅方便維護(hù),而且有利于后續(xù)微服務(wù)化。在此結(jié)構(gòu)的基礎(chǔ)上還可以擴(kuò)展common層(公共組件)、server層(如dubbo對(duì)外提供的服務(wù))

此為項(xiàng)目重構(gòu)的第一步,后續(xù)還會(huì)的框架中集成logback、disconf、redis、dubbo等組件

四、未提到的坑

在搭建過程中還遇到一個(gè)maven私服的問題,原因是公司內(nèi)部的maven私服配置的中央倉(cāng)庫(kù)為阿里的遠(yuǎn)程倉(cāng)庫(kù),它與maven自帶的遠(yuǎn)程倉(cāng)庫(kù)相比有些jar包版本并不全,導(dǎo)致在搭建過程中好幾次因?yàn)闆]拉到相應(yīng)jar包導(dǎo)致項(xiàng)目啟動(dòng)不了。


責(zé)任編輯:中山網(wǎng)站建設(shè)
 【網(wǎng)訊網(wǎng)絡(luò)】國(guó)家高新技術(shù)企業(yè)》十一年專注軟件開發(fā),網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),APP開發(fā),小程序,微信公眾號(hào)開發(fā),定制各類企業(yè)管理軟件(OA、CRM、ERP、OMS訂單管理系統(tǒng)、WMS進(jìn)銷存管理軟件等)!服務(wù)熱線:0760-88610046、13924923903,http://m.denorpool.com

您的項(xiàng)目需求咨詢熱線:0760-88610046(國(guó)家高新技術(shù)企業(yè))

*請(qǐng)認(rèn)真填寫需求,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。