日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

2020idea创建web项目_Spring Boot + Mybatis 多模块(module)项目的完整搭建教程

發(fā)布時(shí)間:2024/1/23 javascript 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2020idea创建web项目_Spring Boot + Mybatis 多模块(module)项目的完整搭建教程 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

點(diǎn)擊上方“方志朋”,選擇“設(shè)為星標(biāo)”

回復(fù)”666“獲取新整理的面試資料

來(lái)源:http://sina.lt/gmQc

一、前言

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

1、開(kāi)發(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...

img

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

img

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

img

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

img

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

img

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

img

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

img

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

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

img

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

img

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

img

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

img

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

img

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

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

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

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

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

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

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類(lèi)中的main方法啟動(dòng)項(xiàng)目,默認(rèn)端口為8080,訪問(wèn)http://localhost:8080/demo/test得到如下效果

img

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

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

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

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

<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.yibao.betagroupId>
<artifactId>beta-bizartifactId>
<version>${beta.version}version>
dependency>
<dependency>
<groupId>com.yibao.betagroupId>
<artifactId>beta-daoartifactId>
<version>${beta.version}version>
dependency>
<dependency>
<groupId>com.yibao.betagroupId>
<artifactId>beta-webartifactId>
<version>${beta.version}version>
dependency>
dependencies>
dependencyManagement>

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

② 在beta-web層中的pom文件中添加beta-biz依賴(lài)

<dependencies>
<dependency>
<groupId>com.yibao.betagroupId>
<artifactId>beta-bizartifactId>
dependency>
dependencies>

③ 在beta-biz層中的pom文件中添加beta-dao依賴(lài)

<dependencies>
<dependency>
<groupId>com.yibao.betagroupId>
<artifactId>beta-daoartifactId>
dependency>
dependencies>

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

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

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
*/
@Service
public class DemoServiceImpl implements DemoService {

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

② DemoController通過(guò)@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類(lèi)中的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類(lèi),此時(shí)需要在BetaWebApplication入口類(lèi)中增加包掃描,設(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),訪問(wèn)http://localhost:8080/demo/test得到如下效果

img

6、集成Mybatis

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

dependencyManagement>
<dependencies>
<dependency>
<groupId>org.mybatis.spring.bootgroupId>
<artifactId>mybatis-spring-boot-starterartifactId>
<version>1.3.2version>
dependency>
<dependency>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
<version>1.16.22version>
dependency>
dependencies>
dependencyManagement>

② 在beta-dao層中的pom文件中添加上述依賴(lài)

<dependencies>
<dependency>
<groupId>org.mybatis.spring.bootgroupId>
<artifactId>mybatis-spring-boot-starterartifactId>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
dependency>
<dependency>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
dependency>
dependencies>

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

img

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

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

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

⑤ DemoService通過(guò)@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
*/
@Service
public class DemoServiceImpl implements DemoService {

@Autowired
private UserMapper userMapper;

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

⑥ 再次運(yùn)行BetaWebApplication類(lèi)中的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類(lèi),此時(shí)需要在BetaWebApplication入口類(lèi)中增加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),訪問(wèn)http://localhost:8080/demo/test得到如下效果

img

至此,一個(gè)簡(jiǎn)單的SpringBoot+Mybatis多模塊項(xiàng)目已經(jīng)搭建完畢,我們也通過(guò)啟動(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等組件

五、未提到的坑

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

熱門(mén)內(nèi)容:?????
  • 不用找了,大廠在用的分庫(kù)分表方案,都在這了!

  • Spring Boot + Vue + Shiro 實(shí)現(xiàn)前后端分離、權(quán)限控制

  • 學(xué) Redis ,至少要看看這篇!7000 字小結(jié)

  • 系統(tǒng)運(yùn)行緩慢,CPU 100%,以及Full GC次數(shù)過(guò)多問(wèn)題的排查思路

  • 恕我直言,HttpClient 你不一定會(huì)用

  • 除了不要 SELECT * ,數(shù)據(jù)庫(kù)還有哪些技巧

  • Redis為什么這么快?一文深入了解Redis內(nèi)存模型!

最近面試BAT,整理一份面試資料《Java面試BAT通關(guān)手冊(cè)》,覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫(kù)、數(shù)據(jù)結(jié)構(gòu)等等。

獲取方式:點(diǎn)“在看”,關(guān)注公眾號(hào)并回復(fù)?666?領(lǐng)取,更多內(nèi)容陸續(xù)奉上。

明天見(jiàn)(。・ω・。)ノ?

超強(qiáng)干貨來(lái)襲 云風(fēng)專(zhuān)訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生

總結(jié)

以上是生活随笔為你收集整理的2020idea创建web项目_Spring Boot + Mybatis 多模块(module)项目的完整搭建教程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。