IDEA SpringBoot多模塊項目搭建詳細過程(轉)

文章轉自https://blog.csdn.net/zcf980/article/details/83040029java

項目源碼: 連接: https://pan.baidu.com/s/1Gp9cY1Qf51tG9-5gUZsnHQ 提取碼: 5iztmysql

CSDN源碼下載: https://download.csdn.net/download/zcf980/10719615web

1. 項目介紹: spring

    本項目包含一個父工程 demo  和 四 個子模塊(demo-base, demo-dao, demo-service, demo-web), demo-base 爲其餘三個模塊的公共內容, 四個模塊都依賴父模塊, demo-dao 依賴 demo-base;   demo-service 依賴 demo-dao, 間接依賴 demo-base;   demo-web 依賴 demo-service, 間接依賴demo-base和demo-daosql

 

2. 搭建思路:數據庫

     先建立一個 Spring Initializr工程 demo 做爲 父工程, 而後在父工程再建四個子 Module (demo-base, demo-demo-dao, demo-service), 其實他們就是四個普通的Spring Initializr工程apache

3.開始搭建app

   首先,建立一個Spring Initializr項目 和 子Modulemaven

            

 
!!!!注意:  修改demo 的 pom 文件中的打包方式爲 pom ide


好戲開始:
剛纔演示建立成一個SpringBoot 工程, 下面正式開始演示搭建多模塊
(1) 第一步, 刪除剛纔建立工程裏的文件, 只保留(.idea文件夾 , 和項目 pom 文件, 以及一個 *.iml 文件 )

 

 

 

(2)第二步, 建立子 Module (demo-base, demo-dao,  demo-service 和 demo-web)  先建立demo-base子工程

 

 

建立好了 demo-base 子項目 , 爲子工程 demo-base 生命父工程以及 爲 父工程聲明子 Module(在 demo 和 demo-base 的 pom 文件中添加以下代碼)

     ---->在 demo-base 中 聲明父工程, 注意:此時demo-base繼承的是 SpringBoot提供的父工程, 須要修改<parent></parent>

           中的版本信息, 修改爲父項目 demo 的版本信息(直接將父項目 demo 的pom文件 中的版本信息複製粘貼到 mode-base             中便可)

    

 --- 聲明父工程

<parent>
<groupId>demo</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
    ----聲明子 Module   

<modules>
<module>demo-base</module>
</modules>
  修改後的父工程 demo 的 pom 文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<!-- 父項目 demo 的版本信息 -->
<groupId>demo</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>demo</name>
<description>Demo project for Spring Boot</description>

<!-- 繼承說明:這裏繼承SpringBoot提供的父工程 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.16.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

<!-- 聲明子模塊 -->
<modules>
<module>demo-base</module>
</modules>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>


</project>
修改後的 demo-base 的 pom 文件 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<!-- demo-base 的版本信息 -->
<groupId>demo</groupId>
<artifactId>demo-base</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>demo-base</name>
<description>Demo project for Spring Boot</description>

<!-- 聲明父項目 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.16.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>


</project>
 建立demo-dao, demo-service  建立方法同樣, 這裏只演示demo-dao的建立

 

 

 建立demo-web 模塊與demo-dao建立除了第4步, 徹底相同須要 添加 web依賴, 在建立過程的第4步須要添加 web 依賴

 

 

(4) 第三步 保留demo-web的啓動類 和 配置文件, 其餘項目的啓動類都刪除, 整個項目只須要一個啓動類和一個配置文件 

demo-base:    /demo/demo-base/src/main/java/demobase/demo/DemoBaseApplication.java   刪除

                      /demo/demo-base/src/main/java/resource/*   刪除

demo-dao:    /demo/demo-dao/src/main/java/demodao/demo/DemoDaoApplication.java   刪除

                     /demo/demo-dao/src/main/java/resource/*   刪除

demo-service:    /demo/demo-service/src/main/java/demoservice/demo/DemoServiceApplication.java   刪除

                          /demo/demo-service/src/main/java/resource/*   刪除

 

 

(5)第四步 在 demo-dao 中添加 demo-base 的依賴信息, 在 demo-service 中添加 demo-dao 的依賴信息, 在 demo-web 中添加 demo-service 的依賴信息,  依賴信息添加到 各 pom 文件下的  <dependencies> </dependencies>節點下

 添加依賴信息後的 demo-dao 的依賴信息

<dependencies>

<!-- 添加 demo-base 的依賴 -->
<dependency>
<groupId>demo</groupId>
<artifactId>demo-base</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
添加依賴信息後的 demo-service 的依賴信息
<dependencies>

<!-- 添加 demo-dao 的依賴 -->
<dependency>
<groupId>demo</groupId>
<artifactId>demo-dao</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
添加依賴信息後的 demo-web 的依賴信息

<dependencies>

<!-- 添加 demo-service 的依賴 -->
<dependency>
<groupId>demo</groupId>
<artifactId>demo-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
(6)第五步 編寫測試代碼

    編寫好代碼後三個模塊的目錄結構(demo-base還未用上, 但實際項目中頗有用): 

 

  下面貼上代碼: 

            給demo-dao 添加

  Demo.java

package demo.demodao;

import javax.persistence.*;

@Entity(name = "demo") //設置實體名, 在數據庫中是表名
public class Demo {

@Id
@GeneratedValue(strategy = GenerationType.AUTO) //設置自動增加
@Column(name = "id")
private Integer id;


@Column(name = "name") //設置數據庫字段名
private String name;

@Column(name = "id")
private Integer id;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}
}
  DemoRepository.java 

package demo.demodao;

import org.springframework.data.jpa.repository.JpaRepository;

public interface DemoRepository extends JpaRepository<Demo, Integer> {

}
  DemoService.java

package demo.demoservice;

import demo.demodao.Demo;

import java.util.List;


public interface DemoService {

Demo addOne(Demo demo);

}
 DemoServiceImpl.java

package demo.demoservice.impl;

import demo.demodao.Demo;
import demo.demodao.DemoRepository;
import demo.demoservice.DemoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class DemoServiceImpl implements DemoService {

@Autowired
private DemoRepository demoRepository;

@Override
public Demo addOne(Demo demo) {
return this.demoRepository.save(demo);
}
}
 DemoController.java  

package demo.demoweb;

import demo.demodao.Demo;
import demo.demoservice.DemoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class DemoController {

@Autowired
private DemoService demoService;

@ResponseBody // 返回 Json 數據
@GetMapping("add")
private Demo add(){
Demo demo = new Demo();
demo.setName("姓名");
demo.setId(1);
return demoService.addOne(demo); // 成功返回 保存後的 demo
}

}
第六步: 建立數據庫, 修改配置文件

 建立輸數據庫 test

 

 修改配置文件: 將 demo-web Resource目錄下 application.properties 文件名改成 applicatin.yml並添加如下內容:

spring:
datasource:
# jdbc:mysql://localhost:3306/test 數據庫地址
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false
username: root # 數據庫用戶名
password: xxxxxx # 數據庫密碼
driver-class-name: com.mysql.jdbc.Driver # 數據庫驅動

jpa:
hibernate:
ddl-auto: create-drop # create-drop 若是實體對應的表已存在,先刪除再建立,不然直接建立
# !!!注意: 第一次運行時可設置爲 create-drop, 這樣就不須要手動建立數據庫表, 可是後面運行務必設置爲none


(7) 第七步: 大功告成, 運行項目

     

直接運行會報錯

 已解決:將啓動類 DemoApplication 移動到 demo 包下


移動: 

 

運行成功!!!!!!! 
 

項目搭建過程當中遇到的問題:  

      Error:(3, 20) java: 程序包demo.demodao不存在 

解決方法, 在控制檯執行 mvn clean

相關文章
相關標籤/搜索