一.爲了方便程序開發,逐漸人們採用springboot多模塊方式構建項目
本案例採用一個問答項目方式的設計架構:項目名answers
- 創建父級工程
- new module創建幾個模塊工程
- 配置父級項目answers的 pom.xml依賴
- 配置各模塊之間的相互依賴pom.xml
- 展示項目結構
- 創建user
- service代碼
- 控制層代碼
- postman測試
- 打包
1.使用idea 自帶的 spring initializr新建父級工程answers 刪除其他成分只留下pom.xml
2.項目名稱右鍵new module 新建子工程answers-web [用於控制器層]
新建子工程answers-service [用於service層]
新建子工程answers-domain [用於entity實體類層]
3.配置父級項目answers的 pom.xml依賴
<?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>
<groupId>com.zes</groupId>
<artifactId>answers</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>answers</name>
<description>Demo many project for one Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.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>
<modules>
<module>answers-web</module>
<module>answers-service</module>
<module>answers-domain</module>
</modules>
<dependencies>
<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>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.42</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
</dependencies>
</project>
4.配置answers-web 的pom.xml 其他模塊同理加入需要的項目依賴即可
<?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>
<groupId>com.zes</groupId>
<artifactId>answers-web</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>answers-web</name>
<description>Demo-web for Spring Boot</description>
<parent>
<groupId>com.zes</groupId>
<artifactId>answers</artifactId>
<version>1.0.0-SNAPSHOT</version>
</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>com.zes</groupId>
<artifactId>answers-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.zes</groupId>
<artifactId>answers-domain</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<!-- 以下build哪個模塊負責啓動項目就配置哪個項目模塊的pom.xml-本answers-web項目爲主要啓動項目所以在此添加本配置 -- >
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
5.此時項目結構爲下圖
6.answers-domain中寫user類
7.answer-service 中寫邏輯業務代碼
UserService.java
package com.zes.answers.service;
import com.zes.answers.domain.User;
/**
* TODO 類描述
*
* @author honghe
*/
public interface UserService {
User findUserById(Long id);
}
UserServiceImpl.java
package com.zes.answers.service.Impl;
import org.springframework.stereotype.Service;
import com.zes.answers.domain.User;
import com.zes.answers.service.UserService;
/**
* TODO 類描述
*
* @author honghe
*/
@Service
public class UserServiceImpl implements UserService {
@Override
public User findUserById(Long id) {
User u = new User();
u.setId(id);
u.setName("admin"+String.valueOf(id));
return u;
}
}
8.answer-web寫控制層
UserController.java
package com.zes.answers.controller;
import java.util.HashMap;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.zes.answers.service.UserService;
/**
* TODO 類描述
*
* @author honghe
*/
@RequestMapping("/users")
@Controller
public class UserController {
@Autowired
UserService userService;
@RequestMapping("/getUserById")
@ResponseBody
public Map<String,Object> getUserById(String id){
Map<String,Object> resutl = new HashMap<>();
resutl.put("code","100");
resutl.put("user",userService.findUserById(Long.valueOf(id)));
return resutl;
}
}
9.啓動answer-web中的application.java跑項目用postman訪問接口測試
10.編譯打包mvn install -DskipTests
11.項目git地址 https://gitee.com/zhaoershuang/answers.git