idea設計spring boot 多模塊開發一【搭建】

一.爲了方便程序開發,逐漸人們採用springboot多模塊方式構建項目
    本案例採用一個問答項目方式的設計架構:項目名answers

  1. 創建父級工程
  2. new module創建幾個模塊工程
  3. 配置父級項目answers的 pom.xml依賴
  4. 配置各模塊之間的相互依賴pom.xml
  5. 展示項目結構
  6. 創建user
  7. service代碼
  8. 控制層代碼
  9. postman測試
  10. 打包

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章