Eclipse构建Maven分包分模块项目并构建服务端

首先说一下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 服务端的程序,由于篇幅有限,所以客户端的放在下一个篇中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/556318.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我们一起动手学大模型应用开发

大模型正逐步成为信息世界的新革命力量&#xff0c;其通过强大的自然语言理解、自然语言生成能力&#xff0c;为开发者提供了新的、更强大的应用开发选择。 随着国内外井喷式的大模型 API 服务开放&#xff0c;如何基于大模型 API 快速、便捷地开发具备更强能力、集成大模型的…

登陆页面html5代码qq,HTML5QQ登录的一篇代码分享

html5背景*{margin:0;padding:0;list-style-type:none;}a,img{border:0;}$(function () {if (!window.ActiveXObject && !!document.createElement("canvas").getContext) {$.getScript("http://im-img.qq.com/pcqq/js/200/cav.js?_1428576021379"…

unity 多台 显示器 控制_飞利浦292E2E评测丨宽屏显示器中的多面手

■本文来自中关村在线屏幕比例21:9或32:9的显示器&#xff0c;因为横向屏幕很长&#xff0c;所以被人形象的称为带鱼屏。相较于16:9的显示器&#xff0c;屏幕拥有更多显示面积&#xff0c;我们能获得更多信息&#xff0c;大大提升办公效率。同时带鱼屏打游戏和看电影时也能获得…

Idea 创建简单的SpringBoot 父子项目

背景 使用Idea 创建一个模块化的SpringBoot项目&#xff0c;但是发现Idea 创建父子项目的方式较Eclipse 较为不同&#xff0c;且Idea 创建的过程较Eclipse创建父子项目的过程复杂。 Eclipse 创建SpringBoot父子项目传送门 网上虽然有Idea创建SpringBoot父子项目&#xff0c;但…

微服务架构与SpringCloud

微服务架构简述 通常而言&#xff0c;微服务架构是一种架构模式或者说是一种架构风格&#xff0c;它提倡将单一应用程序划分成一组小的服务&#xff0c;每个服务运行在其独立的自己的进程中&#xff0c;服务之间互相协调、互相配合为用户提供最终价值。服务之间采用轻量级的通…

REST和RPC是什么东东?两者有什么区别

1 REST与RPC概念 什么是REST REST是一种架构风格&#xff0c;指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。REST规范把所有内容都视为资源&#xff0c;网络上一切皆资源。 REST并没有创造新的技术&#xff0c;组件或服务&#xff0c…

简述计算机进行远程桌面管理操作过程,服务器应用之“远程桌面连接”(操作篇)...

在上篇《服务器应用之“远程桌面连接”(部署篇) 》《服务器应用之“远程桌面连接”(建立篇) 》&#xff0c;我们介绍了远程桌面的部署和建立方法。在远程桌面连接成功后就可以进行一些远程桌面连接可以进行的计算机管理了。具体可以进行的远程桌面连接操作如下&#xff1a;1. 使…

未为dll加载任何符号_专家发现aspersky 和Trend Micro安全性解决方案中的DLL劫持问题...

SafeBreach的研究人员发现了Kaspersky安全连接、Trend Micro最大安全性和Autodesk桌面应用程序中的几个DLL劫持漏洞&#xff0c;黑客可以利用这些漏洞进行DLL预加载、代码执行和权限升级。第一个问题在卡巴斯基安全连接(KSDE) VPN客户端&#xff0c;跟踪为CVE-2019-15689&#…

什么是Eureka? 单机版Eureka如何使用?

Eureka 是什么&#xff1f; Eureka 是Spring Cloud的服务治理组件&#xff0c;有三个核心角色&#xff1a; 服务注册中心、服务提供者、服务消费者。Eureka 主管服务注册中心。 是Netflix的一个子模块&#xff0c;也是核心模块之一。Eureka是一个基于REST的服务&#xff0c;用…

ntko跨浏览器插件_继泄露版后,微软全新 Chrome 内核 Edge 浏览器你都测试过了吗?...

尽管微软的 Office 和 Windows 10 势头不错&#xff0c;但像 WP 手机、XBox 等方面似乎并未获得预期的成功。而先前为了替代老旧的 IE 浏览器&#xff0c;微软倾力开发的 Edge 也未见起色。不过微软也一直在努力变得更加开放&#xff0c;比如发布 VS for Mac、Office for Mac、…

如何将单机版的Eureka服务改为集群版Eureka服务

Eureka 集群原理 基本原理 上图是来自eureka的官方架构图&#xff0c;这是基于集群配置的eureka&#xff1b; 处于不同节点的eureka通过Replicate进行数据同步Application Service为服务提供者Application Client为服务消费者Make Remote Call完成一次服务调用 服务启动后向…

台式计算机读不到u盘怎么回事,电脑读不出u盘怎么办

把U盘插入电脑USB接口中&#xff0c;却发现找不到U盘图标&#xff0c;甚至连安装U盘驱动的提示也没有&#xff0c;那么电脑读不出u盘怎么办呢?天学习啦小编就和大家说说电脑读不出u盘的解决方法。电脑读不出u盘解决方法1、首先应该排除是否是由于电脑系统问题&#xff0c;具体…

Eureka 与Zookeeper 的区别,Eureka相较于Zookeeper好在哪?

传统的ACID A&#xff08;Atomicity&#xff09; 原子性C&#xff08;Consistency&#xff09; 一致性I &#xff08;Isolation&#xff09;独立性D&#xff08;Durability&#xff09;持久性 关系型数据库&#xff08;MySQL&#xff0c;Oracle&#xff0c;SqlServer&#xf…

如何将Springboot项目成功部署到linux服务器上?

springboot的jar包方式 idea默认就是jar打包方式所以直接使用maven工具按照步骤点击就可以直接打包ps:打包前你的数据库相关的连接信息要记得修改&#xff0c;不能再用本地的了 第二步&#xff1a;Maven clean &#xff1a;清除编译后的目录&#xff0c;默认是target目录 [IN…

2018年3月计算机二级考试题,2018年3月计算机二级考试Access综合试题十

2018年3月计算机等级考试即将开始&#xff0c;小编在这里为考生们整理了2018年3月计算机二级考试Access综合试题&#xff0c;希望能帮到大家&#xff0c;想了解更多资讯&#xff0c;请关注出国留学网的及时更新哦。2018年3月计算机二级考试Access综合试题十(1)要将“选课成绩”…

sqldataadapter.fill 索引超出了数组界限_小学生学习C++||第十五节 数组

存储数据的方式第一种&#xff0c;变量&#xff1a;存放1个学生的数学成绩可以定义1个变量存放&#xff0c;那么如果想要存放100个学生的数学成绩应该如何存储呢&#xff1f;第二种&#xff0c;数组&#xff1a;引入数组概念&#xff1a;可以用来表达类型相同的元素的集合&…

数据字典在sga的哪一个组件中缓存_【赵强老师】Oracle数据库的内存结构

首先&#xff0c;我们通过一张图片来了解一下Oracle数据库的内存结构&#xff0c;如下&#xff1a;每个数据库实例有两个关联的内存结构—系统全局区(SGA),程序全局区(PGA)。系统全局(SGA)&#xff1a;一组共享的内存结构(称为SGA 组件)&#xff0c;其中包含一个OracleDB 实例的…

计算机黑屏策略,小黑w7系统诊断策略服务已被禁用的还原教程

小黑w7家庭版开机速度快&#xff0c;是入门级小黑w7系统。据调查不少用户在使用中都碰到了诊断策略服务已被禁用的问题。面对小黑w7系统诊断策略服务已被禁用这样的小问题&#xff0c;我们该如何解决呢&#xff1f;不经常使用电脑的朋友对于小黑w7系统诊断策略服务已被禁用的问…

overline css,CSS text-decoration-line 属性

定义和用法text-decoration-line 属性规定文本修饰要使用的线条类型。注意&#xff1a;您也可以使用 text-decoration 属性设置 text-decoration-line。text-decoration 属性是 text-decoration-line、text-decoration-style 和 text-decoration-color 属性的速记属性。注意&am…

npoi word在试图打开文件时遇到错误_【技巧】word在试图打开文件时遇到错误

问题使用Word的时候遇到了一个问题&#xff0c;如下图所示解决方案情况一&#xff1a;修改文件后缀导致打开错误如果源文件不是“.doc”或者“.docx”格式结尾&#xff0c;通过修改文件后缀的方式修改为“.doc”或者“.docx”格式。在打开文件的时候出现上述警告时&#xff0c;…