首先说一下Maven 模块结构:

一个简单的Maven模块结构是这样的:
---- app-parent 一个父项目(app-parent)聚合很多子项目(app-util,app-dao,app-service,app-web)
|---- pom.xml (pom)
|
|-------- app-util
| |-------- pom.xml (jar)
|
|-------- app-dao
| |-------- pom.xml (jar)
|
|-------- app-service
| |-------- pom.xml (jar)
|
|-------- app-web
|-------- pom.xml (war)

环境

JDK 1.8/Eclipse/Spring Boot 1.5.9.RELEASE/Spring Cloud Dalston.SR1

构建Maven 父项目

打开Eclipse,新建Maven 项目 springcloudDemo

注意:

  • 由于笔记是学习完写的,所以在截图的时候完全按照自己搭建的项目名来写,出现项目名重复,所以这里直接马赛克。正常不会出现这种问题。
  • 请选择 pom

打开父项目:观察结构

添加pom 依赖:

<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.mike.demo</groupId><artifactId>springcloudDemo</artifactId><version>0.0.1-SNAPSHOT</version><packaging>pom</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><junit.version>4.12</junit.version><log4j.version>1.2.17</log4j.version><lombok.version>1.16.18</lombok.version></properties><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Dalston.SR1</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>1.5.9.RELEASE</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.0.4</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.0.31</version></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.0</version></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId><version>1.2.3</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version><scope>test</scope></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>${log4j.version}</version></dependency></dependencies></dependencyManagement>
</project>

基础模快共有三个

  • springcloudDemo-api 封装的整体entity/接口/公共配置等
  • springcloudDemo-provider-dept-8001 微服务落地的服务提供者
  • springcloudDemo-consumer-dept-80 微服务调用的客户端使用
    下面分别就上面上个模块进行构建

pringcloudDemo-api 构建

  1. 鼠标右键点击 父项目 springcloudDemo,新建 Maven Mondule ,点击下一步
  2. 输入模块名称:springcloudDemo-api
  3. 选择Jar 包,点击Finish
  4. 查看父项目此时的情况
  5. pom 依赖
<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><parent><!-- 子类里面显示声明才能有明确的继承表现,无意外就是父类的默认版本否则自己定义 --><groupId>com.mike.demo</groupId><artifactId>springcloudDemo</artifactId><version>0.0.1-SNAPSHOT</version></parent><artifactId>springcloudDemo-api</artifactId><!-- 当前Module我自己叫什么名字 --><dependencies><!-- 当前Module需要用到的jar包,按自己需求添加,如果父类已经包含了,可以不用写版本号 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies>
</project>
  1. 新建 Model Dept
package com.mike.demo.entities;import java.io.Serializable;import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;@SuppressWarnings("serial")
@NoArgsConstructor
@Data
@Accessors(chain=true)
public class Dept implements Serializable //必须序列化
{private Long  deptno;   //主键private String  dname;   //部门名称private String  db_source;//来自那个数据库,因为微服务架构可以一个服务对应一个数据库,同一个信息被存储到不同数据库public Dept(String dname){super();this.dname = dname;}public Dept(Long deptno, String dname, String db_source) {super();this.deptno = deptno;this.dname = dname;this.db_source = db_source;}public Long getDeptno() {return deptno;}public void setDeptno(Long deptno) {this.deptno = deptno;}public String getDname() {return dname;}public void setDname(String dname) {this.dname = dname;}public String getDb_source() {return db_source;}public void setDb_source(String db_source) {this.db_source = db_source;}
}

注意: 可能大家认为 使用了 lombok 为什么还需要写setter/getter 方法,但是在之后的组件整合的过程中,返回Dept Json 数据的时候无法正确返回所以加上了。
8. 点击pom 文件 run : maven clean
9. clean 之后,maven install 将 api 打成jar包供之后的模块使用。
注意: 在打包的过程中,可能出现 Perhaps you are running on a JRE rather than a JDK? 解决办法可以去搜一搜。

springcloudDemo-provider-dept-8001

如同上面新建 springcloudDemo-api 的步骤一样,新建项目。
建成后,父项目拥有:


下面看一下 springcloudDemo-api 项目结构:

  1. pom 文件
<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><parent><groupId>com.mike.demo</groupId><artifactId>springcloudDemo</artifactId><version>0.0.1-SNAPSHOT</version></parent><artifactId>springcloudDemo-provider-dept-8001</artifactId><dependencies><dependency><!-- 引入自己定义的api通用包,可以使用Dept部门Entity --><groupId>com.mike.demo</groupId><artifactId>springcloudDemo-api</artifactId><version>${project.version}</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jetty</artifactId></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></dependency><!-- 修改后立即生效,热部署 --><dependency><groupId>org.springframework</groupId><artifactId>springloaded</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId></dependency></dependencies></project>
  1. 新建application.yml 文件
server:port: 8001mybatis:config-location: classpath:mybatis/mybatis.cfg.xml        # mybatis配置文件所在路径type-aliases-package: com.mike.demo.entities    # 所有Entity别名类所在包mapper-locations:- classpath:mybatis/mapper/**/*.xml                       # mapper映射文件spring:application:name: springcloudDemo-dept datasource:type: com.alibaba.druid.pool.DruidDataSource            # 当前数据源操作类型driver-class-name: org.gjt.mm.mysql.Driver              # mysql驱动包url: jdbc:mysql://xxxxxxxxx:3306/cloudDB01              # 数据库名称username: rootpassword: rootdbcp2:min-idle: 5                                           # 数据库连接池的最小维持连接数initial-size: 5                                       # 初始化连接数max-total: 5                                          # 最大连接数max-wait-millis: 200                                  # 等待连接获取的最大超时时间
  1. mybaties.cfg.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><settings><setting name="cacheEnabled" value="true"/><!-- 二级缓存开启 --></settings></configuration>
  1. DeptMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.mike.demo.dao.DeptDao"><select id="findById" resultType="Dept" parameterType="Long">select deptno,dname,db_source from dept where deptno=#{deptno}; </select><select id="findAll" resultType="Dept">select deptno,dname,db_source from dept; </select><insert id="addDept" parameterType="Dept">INSERT INTO dept(dname,db_source) VALUES(#{dname},DATABASE());</insert></mapper>
  1. DeptDao.java
package com.mike.demo.dao;import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import com.mike.demo.entities.Dept;@Mapper
public interface DeptDao
{public boolean addDept(Dept dept);public Dept findById(Long id);public List<Dept> findAll();
}
  1. DeptService.java
package com.mike.demo.service;import java.util.List;
import com.mike.demo.entities.Dept;
public interface DeptService {public boolean add(Dept dept);public Dept    get(Long id);public List<Dept> list();}
  1. DeptServiceImpl.java
package com.mike.demo.service.impl;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import com.mike.demo.dao.DeptDao;
import com.mike.demo.entities.Dept;
import com.mike.demo.service.DeptService;@Service
public class DeptServiceImpl implements DeptService
{@Autowiredprivate DeptDao dao ;@Overridepublic boolean add(Dept dept){return dao.addDept(dept);}@Overridepublic Dept get(Long id){return dao.findById(id);}@Overridepublic List<Dept> list(){return dao.findAll();}}
  1. DeptController.java
package com.mike.demo.controller;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;import com.mike.demo.entities.Dept;
import com.mike.demo.service.DeptService;@RestController
public class DeptController
{@Autowiredprivate DeptService service;@RequestMapping(value="/dept/add",method=RequestMethod.POST)public boolean add(@RequestBody Dept dept){return service.add(dept);}@RequestMapping(value="/dept/get/{id}",method=RequestMethod.GET)public Dept get(@PathVariable("id") Long id){return service.get(id);}@RequestMapping(value="/dept/list",method=RequestMethod.GET)public List<Dept> list(){return service.list();}
}
  1. 服务启动类 DeptProvider8001_App
package com.mike.demo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** 服务的提供者* @author asus**/
@SpringBootApplication
public class DeptProvider8001_App
{public static void main(String[] args){SpringApplication.run(DeptProvider8001_App.class, args);}
}

数据库文件, 根据上面application.yml 配置的数据库,到Mysql中建库建表

DROP DATABASE IF EXISTS cloudDB01;
CREATE DATABASE cloudDB01 CHARACTER SET UTF8;
USE cloudDB01;
CREATE TABLE dept
(deptno BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT,dname VARCHAR(60),db_source   VARCHAR(60)
);
INSERT INTO dept(dname,db_source) VALUES('开发部',DATABASE());
INSERT INTO dept(dname,db_source) VALUES('人事部',DATABASE());
INSERT INTO dept(dname,db_source) VALUES('财务部',DATABASE());
INSERT INTO dept(dname,db_source) VALUES('市场部',DATABASE());
INSERT INTO dept(dname,db_source) VALUES('运维部',DATABASE());SELECT * FROM dept;

服务端测试

启动启动类


这样我们的 Eclipse 分包构建项目就完成了,且完成了 SpringCloud 服务端的程序,由于篇幅有限,所以客户端的放在下一个篇中。

Eclipse构建Maven分包分模块项目并构建服务端相关推荐

  1. 18、构建Maven的分模块的项目

    1.创建baowei-parent 4.2  pom.xml的配置 <project xmlns="http://maven.apache.org/POM/4.0.0" xm ...

  2. 基于SpringBoot构建分模块项目

    前言 步骤过于详细,多图慎入!!! 假设一个场景,要开发一个4s店维修部的办公系统,其功能有:前台接待,维修抢单,财务结算,库存管理.于是我们创建一个项目balabalabala写完交工. 一段时间后 ...

  3. SpringBoot+Maven 多模块项目的构建、运行、打包实战

    https://www.jb51.net/article/140772.htm?proxy=1 这篇文章主要介绍了SpringBoot+Maven 多模块项目的构建.运行.打包实战,小编觉得挺不错的, ...

  4. maven导入多模块项目

    maven导入多模块项目 一.SVN上Maven多模块项目结构 使用eclipse导入SVN上的Maven多模块项目 Maven多模块项目所在SVN目录 二.eclipse通过SVN导入到工作空间 工 ...

  5. Eclipse使用Maven插件创建Web项目时出错:Could not resolve archetype org.apache.maven.archetypes

    问题描述: 在Eclipse下,使用Maven插件创建Web项目时出错,错误提示如下: 错误信息: Could not resolve archetype org.apache.maven.arche ...

  6. maven搭建多模块项目和管理

    在eclipse下构建maven项目,该项目由多个子模块组成. 1.创建一个父项目 NEW -->project-->maven-->maven Project,点击下一步,进入ne ...

  7. 用maven搭建多模块项目

    首先,前面几次学习已经学会了安装maven,如何创建maven项目等,最近的学习,终于有点进展了,搭建一下企业级多模块项目. 好了,废话不多说,具体如下: 首先新建一个maven项目,pom.xml的 ...

  8. idea 多模块build_[史上最详细]springboot创建基于maven的多模块项目

    点击蓝字 关注我们 背景 项目为什么需要用多模块?springmvc难道还不够我们平常使用吗? 设计模式真言:"高内聚.低耦合",springmvc项目,一般会把项目分成多个包:c ...

  9. Eclipse下Maven工程多模块继承和聚合的创建

    使用Maven对项目进行管理的时候,多模块的继承和聚合是必不可少的,本文简要说明一下在eclipse IDE下创建多模块工程. 1.Maven多模块的聚合 一个Maven工程下创建多个模块,然后用一个 ...

最新文章

  1. 技术01期:大规模图计算【基础篇】
  2. pyinstaller深入使用,打包指定模块,打包静态文件
  3. ubuntu分屏软件_Ubuntu终端多窗口分屏Terminator
  4. openvswitch 流表操作(四十八)
  5. Access denied for user 'root'@'localhost' 解决流程
  6. 如何定义Java对象
  7. 令人窒息的数学动态图
  8. lock是悲观锁还是乐观锁_图文并茂的带你彻底理解悲观锁与乐观锁
  9. Java多线程——带你看AQS框架源码
  10. NLPIR分词系统的使用
  11. Keepalived双主热备,实现nginx集群
  12. 【CPRI】(3)帧格式详解(重点)
  13. h5下划线怎么设置_怎么给文本添加下划线?
  14. kali下使用远程桌面连接
  15. IBM“移动优先”官网正式上线:苹果静候佳音
  16. 南宁琅东的机器人餐厅_南宁埌东藏着一个秘密花园,每天一大波年轻男女进进出出…...
  17. 【清华AI公开课】雷鸣、徐小平开讲:别害怕BAT,AI领域投的钱还不够多
  18. HTTP/HTTPS与流量劫持/DNS劫持
  19. PostGIS中的常用函数
  20. DB-DAY1 梦想若在青春不老

热门文章

  1. [转载] Java中静态成员变量,静态代码块,静态内部类何时被初始化?
  2. word打开老是配置进度_小白教程 | office出现配置进度框,怎么办?
  3. c语言goto语句用法_C语言32个关键字9种控制语句34种运算符整理
  4. ubuntu mysql开发_ubuntu linux mysql 开发模式与连接编译
  5. c语言cin输入数组,C++基础:各种输入方法总结cin.get()、
  6. 怎么覆盖默认样式_图形设计软件cdr教程:设置默认字体
  7. 精通ASP.NET MVC ——模型验证
  8. Windows Server 2012学习
  9. 创建线程时,需要创建的内容
  10. 最长单调递增子序列_最长递增子序列(动态规划 + 二分搜索)