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. ICG游戏:斐波那契博弈

    描述: 有一堆个数为n(n>=2)的石子,游戏双方轮流取石子,规则如下: 1)先手不能在第一次把所有的石子取完,至少取1颗: 2)之后每次可以取的石子数至少为1,至多为对手刚取的石子数的2倍: ...

  2. DataTable记录

    DataTable dt2 = dt.Copy();//复制结构和数据 //复制结构,不要数据 DataTable dt2 = new DataTable(); for (int i = 0; i & ...

  3. vargant

    http://blog.csdn.net/openn/article/details/54927375

  4. oracle 建立表空间和用户

    .建立表空间, create tablespace "NETHRA" DATAFILE 'D:\DataBase\Oracle\iClass\iclass\iclass.DBF' ...

  5. Java程序设计——对象序列化

    对象序列化的目标是将对象保存到磁盘中或允许在网络中直接传输对象,对象序列化机制允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制流持久保存在磁盘上,通过网络将这种二进制流传输到另 ...

  6. o7 文件和函数

    一:文件 1 控制文件内指针的移动 文件内指针移动,只有在t模式下的read(n),n代表的字符的个数 除此之外文件内指针的移动都是以字节为单位的 with open('a.txt',mode ='r ...

  7. Jenkins 邮箱配置及问题解决

    Failed to send out e-mail javax.mail.MessagingException: Could not connect to SMTP host: smtp.rytong ...

  8. laydate的使用

    理论可以看看:http://blog.csdn.net/u013372487/article/details/50534034 下载包:链接:http://pan.baidu.com/s/1kUNQ6 ...

  9. OA与ERP集成 可行?

    [正文] 近些年来,当谈论到企业信息化的时候,ERP都成为一个热门话题,ERP的出现似乎给企业带来了一个翻天覆地的变化,而且也成为企业实现信息化的"新宠儿".然而OA也曾经是企业信 ...

  10. 基于S2SH开发病房管理系统的设计与实现 源码

    基于S2SH开发病房管理系统的设计与实现: 开发环境: Windows操作系统 开发工具:Eclipse/MyEclipse+Jdk+Tomcat+MySQL数据库 运行效果图:       此源码经 ...