docker微服务部署之:一,搭建Eureka微服务项目

一、新增demo_article模块,并编写代码

右键demo_parent->new->Module->Maven,选择Module SK为jdk8->ArtifactId:demo_article

1.修改pom.xml文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <parent>
  6. <artifactId>demo_parent</artifactId>
  7. <groupId>com.demo</groupId>
  8. <version>1.0-SNAPSHOT</version>
  9. </parent>
  10. <modelVersion>4.0.0</modelVersion>
  11.  
  12. <artifactId>demo_article</artifactId>
  13.  
  14. <dependencies>
         <!-- jpa依赖 -->
  15. <dependency>
  16. <groupId>org.springframework.boot</groupId>
  17. <artifactId>spring-boot-starter-data-jpa</artifactId>
  18. </dependency>
         <!-- mysql依赖-->
  19. <dependency>
  20. <groupId>mysql</groupId>
  21. <artifactId>mysql-connector-java</artifactId>
  22. </dependency>
         <!-- eureka客户端依赖 -->
  23. <dependency>
  24. <groupId>org.springframework.cloud</groupId>
  25. <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  26. </dependency>
  27. </dependencies>
  28. </project>

2.在resources目录下新增application.yml文件

  1. server:
  2. port: 9001 #article启动端口,可自定义
  3. spring:
  4. application:
  5. name: demo-article #article项目名称,可自定义
  6. datasource:
  7. url: jdbc:mysql://192.168.31.181:3306/docker?characterEncoding=UTF8 #192.168.31.181为虚拟机宿主机的ip地址,mysql是安装在docker容器里。详见:Centos7下安装DockerDocker安装Mysql
  8. driver-class-name: com.mysql.jdbc.Driver
  9. username: root
  10. password: 123456
  11. jpa:
  12. database: mysql
  13. show-sql: true
  14. generate-ddl: false
  15. eureka:
  16. client:
  17. fetch-registry: true
  18. register-with-eureka: true
  19. service-url:
  20. defaultZone: http://192.168.31.181:7000/eureka #在IDEA中运行时使用127.0.0.1,部署发布时,请修改为虚拟机宿主机的ip地址
  21. instance:
  22. prefer-ip-address: true

3.新建com.demo.article包,并在该包下新建启动类ArticleApplication

  1. package com.demo.article;
  2.  
  3. import org.springframework.boot.SpringApplication;
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;
  5. import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

  6. /**
    * 文章微服务
    */
    // 标注为一个spring boot项目
  7. @SpringBootApplication
    // 标注为一个eureka客户端
  8. @EnableEurekaClient
  9. public class ArticleApplication {
  10. public static void main(String[] args) {
  11. SpringApplication.run(ArticleApplication.class, args);
  12. }
  13. }

4.编写pojo类

  1. package com.demo.article.pojo;
  2.  
  3. import lombok.Data;
  4.  
  5. import javax.persistence.*;
  6. import java.io.Serializable;
  7. import java.util.Date;
  8.  
  9. @Entity
  10. @Table(name = "tb_article")
  11. @Data //使用该注解,相当于自动生成了getter和setter方法
  12. public class Article implements Serializable {
  13. @Id
  14. @GeneratedValue(strategy = GenerationType.IDENTITY) #id自增
  15. private Integer id;
  16. private String title;
  17. private String content;
  18. private String author;
  19. private Date addTime;
  20. }

5.编写dao类

  1. package com.demo.article.dao;
  2.  
  3. import com.demo.article.pojo.Article;
  4. import org.springframework.data.jpa.repository.JpaRepository;
  5.  
  6. public interface ArticleDao extends JpaRepository<Article,Integer> {
  7.  
  8. }

6.编写service类

  1. package com.demo.article.service;
  2.  
  3. import com.demo.article.pojo.Article;
  4.  
  5. import java.util.List;
  6.  
  7. public interface ArticleService {
  8. List<Article> findAll();
  9.  
  10. Article findById(Integer id);
  11.  
  12. void add(Article article);
  13.  
  14. void updae(Article article);
  15.  
  16. void deleteById(Integer id);
  17. }
  1. package com.demo.article.service.impl;
  2.  
  3. import com.demo.article.dao.ArticleDao;
  4. import com.demo.article.pojo.Article;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.stereotype.Service;
  7.  
  8. import java.util.List;
  9.  
  10. @Service
  11. public class ArticleServiceImpl implements ArticleService {
  12. @Autowired
  13. ArticleDao articleDao;
  14.  
  15. @Override
  16. public List<Article> findAll() {
  17. return articleDao.findAll();
  18. }
  19.  
  20. @Override
  21. public Article findById(Integer id) {
  22. return articleDao.findById(id).get();
  23. }
  24.  
  25. @Override
  26. public void add(Article article) {
  27. articleDao.save(article);
  28. }
  29.  
  30. @Override
  31. public void updae(Article article) {
  32. articleDao.save(article);
  33. }
  34.  
  35. @Override
  36. public void deleteById(Integer id) {
  37. articleDao.deleteById(id);
  38. }
  39. }

7.编写vo类

  1. package com.demo.article.vo;
  2.  
  3. import lombok.Data;
  4.  
  5. import java.io.Serializable;
  6.  
  7. /**
  8. * 统一返回数据实体类
  9. */
  10. @Data
  11. public class Result implements Serializable {
  12. private Boolean flag;//是否成功
  13. private String message;//消息
  14. private Object data;//返回数据
  15.  
  16. public Result(Boolean flag, String message) {
  17. this.flag = flag;
  18. this.message = message;
  19. }
  20.  
  21. public Result(Boolean flag, String message, Object data) {
  22. this.flag = flag;
  23. this.message = message;
  24. this.data = data;
  25. }
  26. }

8.编写controller类

  1. package com.demo.article.controller;
  2.  
  3. import com.demo.article.pojo.Article;
  4. import com.demo.article.service.ArticleService;
  5. import com.demo.article.vo.Result;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.web.bind.annotation.*;
  8.  
  9. @RestController
  10. @RequestMapping("/article")
  11. public class ArticleController {
  12. @Autowired
  13. ArticleService articleService;
  14.  
  15. @RequestMapping(method = RequestMethod.GET)
  16. public Result findAll(){
  17. return new Result(true, "查询成功", articleService.findAll());
  18. }
  19.  
  20. @RequestMapping(value = "/{id}",method = RequestMethod.GET)
  21. public Result findById(@PathVariable Integer id) {
  22. return new Result(true, "查询成功", articleService.findById(id));
  23. }
  24.  
  25. @RequestMapping(method = RequestMethod.POST)
  26. public Result add(@RequestBody Article article) {
  27. articleService.add(article);
  28. return new Result(true, "添加成功");
  29. }
  30.  
  31. @RequestMapping(value = "/{id}",method = RequestMethod.PUT)
  32. public Result update(@RequestBody Article article, @PathVariable("id") Integer id) {
  33. article.setId(id);
  34. articleService.updae(article);
  35. return new Result(true,"修改成功");
  36. }
  37.  
  38. @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
  39. public Result deleteById(@PathVariable("id") Integer id) {
  40. articleService.deleteById(id);
  41. return new Result(true, "删除成功");
  42. }
  43. }

9.数据库sql脚本

先创建数据库docker,字符集utf8,排序规则utf8-general_ci

  1. SET NAMES utf8mb4;
  2. SET FOREIGN_KEY_CHECKS = 0;
  3.  
  4. -- ----------------------------
  5. -- Table structure for tb_article
  6. -- ----------------------------
  7. DROP TABLE IF EXISTS `tb_article`;
  8. CREATE TABLE `tb_article` (
  9. `id` int(11) NOT NULL AUTO_INCREMENT,
  10. `title` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  11. `content` mediumtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL,
  12. `author` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  13. `add_time` datetime(0) NULL DEFAULT NULL,
  14. PRIMARY KEY (`id`) USING BTREE
  15. ) ENGINE = MyISAM AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

10.运行ArticleApplication启动类

刷新eureka界面,可以看到有一个名为DEMO-ARTICLE的服务已经注册上来了

11.使用Postman进行CRUD测试

11.1 测试add方法

11.2 测试findAll方法

11.3 测试udpate方法

11.4 测试findById方法

11.5 测试delete方法

 docker微服务部署之:三,搭建Zuul微服务项目

docker微服务部署之:二、搭建文章微服务项目的更多相关文章

  1. 微服务理论之二:面向微服务架构与传统架构、SOA对比,以及云化对比

    一.Monolith 网上对Microservice进行介绍的文章常常以Monolith作为开头,我也不会例外.原因是,知道了Monolith的不便之后才能更容易地理解Microservice架构模式 ...

  2. 自动化服务部署(二):Linux下安装jenkins

    jenkins是一个Java开发的开源持续集成工具,广泛用于项目开发,具有自动化构建.测试和部署等功能,它的运行需要Java环境. 上篇博客介绍了Linux下安装JDK的步骤,这篇博客,介绍下Linu ...

  3. docker微服务部署之:三,搭建Zuul微服务项目

    docker微服务部署之:二.搭建文章微服务项目 一.新增demo_eureka模块,并编写代码 右键demo_parent->new->Module->Maven,选择Module ...

  4. docker微服务部署之:一,搭建Eureka微服务项目

    先说明一下docker需要搭建的微服务的基本情况: 项目情况:一个demo_parent项目,下面三个子模块:demo_eureka(eureka服务).demo_article(文章服务).demo ...

  5. 微服务实战(六):选择微服务部署策略 - DockOne.io

    原文:微服务实战(六):选择微服务部署策略 - DockOne.io [编者的话]这篇博客是用微服务建应用的第六篇,第一篇介绍了微服务架构模板,并且讨论了使用微服务的优缺点.随后的文章讨论了微服务不同 ...

  6. 服务部署到Swarm Cluster中

    对于已存在的镜像,将其部署到服务器中并开始对外服务,便是它的职责,而我们要做的便是帮助它完成职责,前两个应用环节都已产生了相应的镜像,在这一环节,将完成服务部署到容器集群的工作,对于这一过程,实际执行 ...

  7. ASP.NET MVC深入浅出系列(持续更新) ORM系列之Entity FrameWork详解(持续更新) 第十六节:语法总结(3)(C#6.0和C#7.0新语法) 第三节:深度剖析各类数据结构(Array、List、Queue、Stack)及线程安全问题和yeild关键字 各种通讯连接方式 设计模式篇 第十二节: 总结Quartz.Net几种部署模式(IIS、Exe、服务部署【借

    ASP.NET MVC深入浅出系列(持续更新)   一. ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态模 ...

  8. 第十二节: 总结Quartz.Net几种部署模式(IIS、Exe、服务部署【借助TopSelf、服务类】)

    一. IIS部署 比如在MVC框架中集成了Quartz.Net定时调度,此时该调度系统会随着MVC框架被挂在IIS下,IIS会进程回收,所以大部分开发都会遇到Quartz挂在IIS下一段时间不好用. ...

  9. WCF系列教程之WCF服务宿主与WCF服务部署

    本文参考自http://www.cnblogs.com/wangweimutou/p/4377062.html,纯属读书笔记,加深记忆. 一.简介 任何一个程序的运行都需要依赖一个确定的进程中,WCF ...

随机推荐

  1. jquery中的trigger()和preventDefault()方法

    trigger()方法用户模拟用户操作,比较常见的一种情况就是输入框自动获得焦点: <!doctype html> <html> <head> <meta c ...

  2. golang之map数据类型

    先上代码…… package main import "fmt" func testMap() { //两种声明map方式,切记,必须初始化才能用,否则panic //var a ...

  3. for(var i=0;i<5;i++){ setTimeout(function() { console.log(i) }, 100);}

    涉及异步.作用域.闭包 1.settimeout是异步执行,100ms后往任务队列里面添加一个任务 2.let不仅将i绑定到for循环块中,事实上它将其重新绑定到循环体的每一次迭代中 3.闭包 set ...

  4. nano编辑器

    1.ctrl+O 2.回车 3.ctrl+exit

  5. centos下修改文件后如何保存退出

    centos下修改文件后如何保存退出 保存命令 按ESC键 跳到命令模式,然后: :w 保存文件但不退出vi :w file 将修改另外保存到file中,不退出vi :w! 强制保存,不推出vi :w ...

  6. UVa 10829 L-Gap Substrings (后缀数组+rmq)

    题意:给定上一个串,问你多少种UVU这一种形式的串,其中U不为空并且V的长度给定了. 析:枚举 U 的长度L,那么U一定是经过 0 L 2L 3L .... 其中的一个,所以求两个长度反lcp,一个向 ...

  7. 23 DesignPatterns学习笔记:C++语言实现 --- 1.3 Singletion

    23 DesignPatterns学习笔记:C++语言实现 --- 1.3 Singletion 2016-07-21 (www.cnblogs.com/icmzn) 模式理解  

  8. NSIS制作安装包,如何检测并卸载已有版本

    将如下代码追加到NSIS脚本的尾部即可. Var UNINSTALL_PROG Function .onInit   ClearErrors   ReadRegStr $UNINSTALL_PROG ...

  9. 查看WEB ADI所对应的包过程函数

    SELECT BNEINTERFACESBEO.APPLICATION_ID       , BNEINTERFACESBEO.INTERFACE_CODE       , BNEINTERFACES ...

  10. sql server partition分区与group by 分组

    例子:在一个StudentScore表中,有序号ID,班级ClassId,学生姓名Name,性别Sex,语文成绩ChineseScore,数学成绩MathScore,平均成绩AverageScore等 ...