docker微服务部署之:二、搭建文章微服务项目
一、新增demo_article模块,并编写代码
右键demo_parent->new->Module->Maven,选择Module SK为jdk8->ArtifactId:demo_article
1.修改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">
- <parent>
- <artifactId>demo_parent</artifactId>
- <groupId>com.demo</groupId>
- <version>1.0-SNAPSHOT</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
- <artifactId>demo_article</artifactId>
- <dependencies>
<!-- jpa依赖 -->- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-data-jpa</artifactId>
- </dependency>
<!-- mysql依赖-->- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- </dependency>
<!-- eureka客户端依赖 -->- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
- </dependency>
- </dependencies>
- </project>
2.在resources目录下新增application.yml文件
- server:
- port: 9001 #article启动端口,可自定义
- spring:
- application:
- name: demo-article #article项目名称,可自定义
- datasource:
- url: jdbc:mysql://192.168.31.181:3306/docker?characterEncoding=UTF8 #192.168.31.181为虚拟机宿主机的ip地址,mysql是安装在docker容器里。详见:Centos7下安装Docker和Docker安装Mysql
- driver-class-name: com.mysql.jdbc.Driver
- username: root
- password: 123456
- jpa:
- database: mysql
- show-sql: true
- generate-ddl: false
- eureka:
- client:
- fetch-registry: true
- register-with-eureka: true
- service-url:
- defaultZone: http://192.168.31.181:7000/eureka #在IDEA中运行时使用127.0.0.1,部署发布时,请修改为虚拟机宿主机的ip地址
- instance:
- prefer-ip-address: true
3.新建com.demo.article包,并在该包下新建启动类ArticleApplication
- package com.demo.article;
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
- import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
/**
* 文章微服务
*/
// 标注为一个spring boot项目- @SpringBootApplication
// 标注为一个eureka客户端- @EnableEurekaClient
- public class ArticleApplication {
- public static void main(String[] args) {
- SpringApplication.run(ArticleApplication.class, args);
- }
- }
4.编写pojo类
- package com.demo.article.pojo;
- import lombok.Data;
- import javax.persistence.*;
- import java.io.Serializable;
- import java.util.Date;
- @Entity
- @Table(name = "tb_article")
- @Data //使用该注解,相当于自动生成了getter和setter方法
- public class Article implements Serializable {
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY) #id自增
- private Integer id;
- private String title;
- private String content;
- private String author;
- private Date addTime;
- }
5.编写dao类
- package com.demo.article.dao;
- import com.demo.article.pojo.Article;
- import org.springframework.data.jpa.repository.JpaRepository;
- public interface ArticleDao extends JpaRepository<Article,Integer> {
- }
6.编写service类
- package com.demo.article.service;
- import com.demo.article.pojo.Article;
- import java.util.List;
- public interface ArticleService {
- List<Article> findAll();
- Article findById(Integer id);
- void add(Article article);
- void updae(Article article);
- void deleteById(Integer id);
- }
- package com.demo.article.service.impl;
- import com.demo.article.dao.ArticleDao;
- import com.demo.article.pojo.Article;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.util.List;
- @Service
- public class ArticleServiceImpl implements ArticleService {
- @Autowired
- ArticleDao articleDao;
- @Override
- public List<Article> findAll() {
- return articleDao.findAll();
- }
- @Override
- public Article findById(Integer id) {
- return articleDao.findById(id).get();
- }
- @Override
- public void add(Article article) {
- articleDao.save(article);
- }
- @Override
- public void updae(Article article) {
- articleDao.save(article);
- }
- @Override
- public void deleteById(Integer id) {
- articleDao.deleteById(id);
- }
- }
7.编写vo类
- package com.demo.article.vo;
- import lombok.Data;
- import java.io.Serializable;
- /**
- * 统一返回数据实体类
- */
- @Data
- public class Result implements Serializable {
- private Boolean flag;//是否成功
- private String message;//消息
- private Object data;//返回数据
- public Result(Boolean flag, String message) {
- this.flag = flag;
- this.message = message;
- }
- public Result(Boolean flag, String message, Object data) {
- this.flag = flag;
- this.message = message;
- this.data = data;
- }
- }
8.编写controller类
- package com.demo.article.controller;
- import com.demo.article.pojo.Article;
- import com.demo.article.service.ArticleService;
- import com.demo.article.vo.Result;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.*;
- @RestController
- @RequestMapping("/article")
- public class ArticleController {
- @Autowired
- ArticleService articleService;
- @RequestMapping(method = RequestMethod.GET)
- public Result findAll(){
- return new Result(true, "查询成功", articleService.findAll());
- }
- @RequestMapping(value = "/{id}",method = RequestMethod.GET)
- public Result findById(@PathVariable Integer id) {
- return new Result(true, "查询成功", articleService.findById(id));
- }
- @RequestMapping(method = RequestMethod.POST)
- public Result add(@RequestBody Article article) {
- articleService.add(article);
- return new Result(true, "添加成功");
- }
- @RequestMapping(value = "/{id}",method = RequestMethod.PUT)
- public Result update(@RequestBody Article article, @PathVariable("id") Integer id) {
- article.setId(id);
- articleService.updae(article);
- return new Result(true,"修改成功");
- }
- @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
- public Result deleteById(@PathVariable("id") Integer id) {
- articleService.deleteById(id);
- return new Result(true, "删除成功");
- }
- }
9.数据库sql脚本
先创建数据库docker,字符集utf8,排序规则utf8-general_ci
- SET NAMES utf8mb4;
- SET FOREIGN_KEY_CHECKS = 0;
- -- ----------------------------
- -- Table structure for tb_article
- -- ----------------------------
- DROP TABLE IF EXISTS `tb_article`;
- CREATE TABLE `tb_article` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `title` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
- `content` mediumtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL,
- `author` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
- `add_time` datetime(0) NULL DEFAULT NULL,
- PRIMARY KEY (`id`) USING BTREE
- ) 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微服务部署之:二、搭建文章微服务项目的更多相关文章
- 微服务理论之二:面向微服务架构与传统架构、SOA对比,以及云化对比
一.Monolith 网上对Microservice进行介绍的文章常常以Monolith作为开头,我也不会例外.原因是,知道了Monolith的不便之后才能更容易地理解Microservice架构模式 ...
- 自动化服务部署(二):Linux下安装jenkins
jenkins是一个Java开发的开源持续集成工具,广泛用于项目开发,具有自动化构建.测试和部署等功能,它的运行需要Java环境. 上篇博客介绍了Linux下安装JDK的步骤,这篇博客,介绍下Linu ...
- docker微服务部署之:三,搭建Zuul微服务项目
docker微服务部署之:二.搭建文章微服务项目 一.新增demo_eureka模块,并编写代码 右键demo_parent->new->Module->Maven,选择Module ...
- docker微服务部署之:一,搭建Eureka微服务项目
先说明一下docker需要搭建的微服务的基本情况: 项目情况:一个demo_parent项目,下面三个子模块:demo_eureka(eureka服务).demo_article(文章服务).demo ...
- 微服务实战(六):选择微服务部署策略 - DockOne.io
原文:微服务实战(六):选择微服务部署策略 - DockOne.io [编者的话]这篇博客是用微服务建应用的第六篇,第一篇介绍了微服务架构模板,并且讨论了使用微服务的优缺点.随后的文章讨论了微服务不同 ...
- 服务部署到Swarm Cluster中
对于已存在的镜像,将其部署到服务器中并开始对外服务,便是它的职责,而我们要做的便是帮助它完成职责,前两个应用环节都已产生了相应的镜像,在这一环节,将完成服务部署到容器集群的工作,对于这一过程,实际执行 ...
- 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的无状态模 ...
- 第十二节: 总结Quartz.Net几种部署模式(IIS、Exe、服务部署【借助TopSelf、服务类】)
一. IIS部署 比如在MVC框架中集成了Quartz.Net定时调度,此时该调度系统会随着MVC框架被挂在IIS下,IIS会进程回收,所以大部分开发都会遇到Quartz挂在IIS下一段时间不好用. ...
- WCF系列教程之WCF服务宿主与WCF服务部署
本文参考自http://www.cnblogs.com/wangweimutou/p/4377062.html,纯属读书笔记,加深记忆. 一.简介 任何一个程序的运行都需要依赖一个确定的进程中,WCF ...
随机推荐
- jquery中的trigger()和preventDefault()方法
trigger()方法用户模拟用户操作,比较常见的一种情况就是输入框自动获得焦点: <!doctype html> <html> <head> <meta c ...
- golang之map数据类型
先上代码…… package main import "fmt" func testMap() { //两种声明map方式,切记,必须初始化才能用,否则panic //var a ...
- for(var i=0;i<5;i++){ setTimeout(function() { console.log(i) }, 100);}
涉及异步.作用域.闭包 1.settimeout是异步执行,100ms后往任务队列里面添加一个任务 2.let不仅将i绑定到for循环块中,事实上它将其重新绑定到循环体的每一次迭代中 3.闭包 set ...
- nano编辑器
1.ctrl+O 2.回车 3.ctrl+exit
- centos下修改文件后如何保存退出
centos下修改文件后如何保存退出 保存命令 按ESC键 跳到命令模式,然后: :w 保存文件但不退出vi :w file 将修改另外保存到file中,不退出vi :w! 强制保存,不推出vi :w ...
- UVa 10829 L-Gap Substrings (后缀数组+rmq)
题意:给定上一个串,问你多少种UVU这一种形式的串,其中U不为空并且V的长度给定了. 析:枚举 U 的长度L,那么U一定是经过 0 L 2L 3L .... 其中的一个,所以求两个长度反lcp,一个向 ...
- 23 DesignPatterns学习笔记:C++语言实现 --- 1.3 Singletion
23 DesignPatterns学习笔记:C++语言实现 --- 1.3 Singletion 2016-07-21 (www.cnblogs.com/icmzn) 模式理解
- NSIS制作安装包,如何检测并卸载已有版本
将如下代码追加到NSIS脚本的尾部即可. Var UNINSTALL_PROG Function .onInit ClearErrors ReadRegStr $UNINSTALL_PROG ...
- 查看WEB ADI所对应的包过程函数
SELECT BNEINTERFACESBEO.APPLICATION_ID , BNEINTERFACESBEO.INTERFACE_CODE , BNEINTERFACES ...
- sql server partition分区与group by 分组
例子:在一个StudentScore表中,有序号ID,班级ClassId,学生姓名Name,性别Sex,语文成绩ChineseScore,数学成绩MathScore,平均成绩AverageScore等 ...