资讯专栏INFORMATION COLUMN

SpringCloud(第 038 篇)idea环境热部署微服务开发

VishKozus / 1182人阅读

摘要:添加简单用户微服务启动类简单用户微服务类支持热部署。

SpringCloud(第 038 篇)idea环境热部署微服务开发

-

一、大致介绍
1、我们在开发过程中,会经常需要启动、停止微服务,而且有时候会比较频繁,需要不停的操作启停动作;
2、而我们本章节主要讲解下如何在开发环境中进行热部署,这样的话可以在一定程度上专心敲代码,两耳不闻窗外事,一心只想敲代码;
二、实现步骤 2.1 添加 maven 引用包


    4.0.0

    springms-simple-provider-user-devtools
    1.0-SNAPSHOT
    jar
    
    
        com.springms.cloud
        springms-spring-cloud
        1.0-SNAPSHOT
    
    
    
        
        
            org.springframework.boot
            spring-boot-starter-data-jpa
        

        
        
            org.springframework.boot
            spring-boot-starter-web
        

        
        
            com.h2database
            h2
            runtime
        

        
        
            org.springframework.boot
            spring-boot-starter-data-solr
        

        
        
            org.springframework.boot
            spring-boot-devtools
            true
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    true
                
            
        
    

2.2 添加应用配置文件(springms-simple-provider-user-devtoolssrcmainresourcesapplication.yml)
server:
  port: 8305
spring:
  application:
    name: springms-simple-provider-user-devtools  #全部小写
  jpa:
    generate-ddl: false
    show-sql: true
    hibernate:
      ddl-auto: none
  datasource:
    platform: h2
    schema: classpath:schema.sql
    data: classpath:data.sql
  thymeleaf:
    cache: false
logging:
  level:
    root: INFO
    org.hibernate: INFO
    org.hibernate.type.descriptor.sql.BasicBinder: TRACE
    org.hibernate.type.descriptor.sql.BasicExtractor: TRACE
    com.springms: DEBUG
2.3 添加 H2 数据库脚本(springms-simple-provider-user-devtoolssrcmainresourcesschema.sql)
drop table user if exists;

CREATE TABLE USER(
    id BIGINT GENERATED by default as identity,
    username VARCHAR(40),
    name VARCHAR(20),
    age int(3),
    balance DECIMAL(10, 2),
    PRIMARY KEY(id)
);
2.4 插入 H2 数据库一些初始化数据(springms-simple-provider-user-devtoolssrcmainresourcesdata.sql)
INSERT into user (id, username, name, age, balance) values (1, "user1", "张三", 20, 100.00);
INSERT into user (id, username, name, age, balance) values (2, "user2", "李四", 22, 100.00);
INSERT into user (id, username, name, age, balance) values (3, "user3", "王五", 24, 100.00);
INSERT into user (id, username, name, age, balance) values (4, "user4", "赵六", 26, 100.00);
INSERT into user (id, username, name, age, balance) values (5, "user5", "李逵", 27, 100.00);
INSERT into user (id, username, name, age, balance) values (6, "user6", "张远", 10, 100.00);
INSERT into user (id, username, name, age, balance) values (7, "user7", "迪拜", 60, 100.00);
INSERT into user (id, username, name, age, balance) values (8, "user8", "哈士奇", 40, 100.00);
INSERT into user (id, username, name, age, balance) values (9, "user9", "关羽", 30, 100.00);
2.5 添加访问底层数据模型的DAO接口(springms-simple-provider-user-devtoolssrcmainjavacomspringmscloudrepositoryUserRepository.java)
package com.springms.cloud.repository;

import com.springms.cloud.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface UserRepository extends JpaRepository {

}
2.6 添加实体用户类User(springms-simple-provider-user-devtoolssrcmainjavacomspringmscloudentityUser.java)
package com.springms.cloud.entity;

import java.math.BigDecimal;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class User {
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Long id;

  @Column
  private String username;

  @Column
  private String name;

  @Column
  private Short age;

  @Column
  private BigDecimal balance;

  public Long getId() {
    return this.id;
  }

  public void setId(Long id) {
    this.id = id;
  }

  public String getUsername() {
    return this.username;
  }

  public void setUsername(String username) {
    this.username = username;
  }

  public String getName() {
    return this.name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public Short getAge() {
    return this.age;
  }

  public void setAge(Short age) {
    this.age = age;
  }

  public BigDecimal getBalance() {
    return this.balance;
  }

  public void setBalance(BigDecimal balance) {
    this.balance = balance;
  }
}
2.7 添加用户Web访问层Controller(springms-simple-provider-user-devtools/src/main/java/com/springms/cloud/controller/SimpleProviderUserDevtoolsController.java)
package com.springms.cloud.controller;

import com.springms.cloud.entity.User;
import com.springms.cloud.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

/**
 * 用户微服务Controller(支持 idea 热部署)。
 *
 * @author hmilyylimh
 *
 * @version 0.0.1
 *
 * @date 17/10/18
 *
 */
@RestController
public class SimpleProviderUserDevtoolsController {

    @Autowired
    private UserRepository userRepository;

    @GetMapping("/simple/{id}")
    public User findById(@PathVariable Long id) {
        return this.userRepository.findOne(id);
    }

    @GetMapping("simple")
    public String simple() {
        return "simple-2017-09";
    }

    @GetMapping("simple2")
    public String simple2() {
        return "simple2-2017";
    }
}

2.8 添加简单用户微服务启动类(springms-simple-provider-user-devtoolssrcmainjavacomspringmscloudMsSimpleProviderUserApplication.java)
package com.springms.cloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * 简单用户微服务类(支持 idea 热部署)。
 *
 * @author hmilyylimh
 *
 * @version 0.0.1
 *
 * @date 17/10/18
 *
 */
@SpringBootApplication
public class MsSimpleProviderUserDevtoolsApplication {

    public static void main(String[] args) {
        SpringApplication.run(MsSimpleProviderUserDevtoolsApplication.class, args);
        System.out.println("【【【【【【 简单用户微服务(热部署) 】】】】】】已启动.");
    }
}
三、测试
/****************************************************************************************
 一、简单用户微服务接口测试:

 1、添加 spring-boot-devtools 热部署依赖;
 2、pom.xml 添加 true 属性;
 3、设置 idea 属性:“File” -> “Settings” -> “Build,Execution,Deplyment” -> “Compiler”,选中打勾 “Build project automatically” ;
 4、设置 idea 属性:组合键:“Shift+Ctrl+Alt+/” ,选择 “Registry” ,选中打勾 “compiler.automake.allow.when.app.running” ;
 5、设置缓存配置 spring.thymeleaf.cache=false;
 6、设置 chrome 属性:F12或者“Ctrl+Shift+I”,打开开发者工具,“Network” 选项卡下 选中打勾 “Disable Cache(while DevTools is open)” ;

 7、启动 springms-simple-provider-user-devtools 模块服务,启动1个端口;
 8、在浏览器输入地址 http://localhost:8305/simple 可以看到信息成功的被打印出来;

 9、改动 Controller 某个方法的返回值,或者新增方法,然后会看到控制台自动重启该应用,进行热部署;
 10、再在浏览器请求刚刚改动的链接,发现链接返回的内容确实动态改变过来了,这就是热部署;
 ****************************************************************************************/
四、下载地址

https://gitee.com/ylimhhmily/SpringCloudTutorial.git

SpringCloudTutorial交流QQ群: 235322432

SpringCloudTutorial交流微信群: 微信沟通群二维码图片链接

欢迎关注,您的肯定是对我最大的支持!!!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/67802.html

相关文章

  • Java后端

    摘要:,面向切面编程,中最主要的是用于事务方面的使用。目标达成后还会有去构建微服务,希望大家多多支持。原文地址手把手教程优雅的应用四手把手实现后端搭建第四期 SpringMVC 干货系列:从零搭建 SpringMVC+mybatis(四):Spring 两大核心之 AOP 学习 | 掘金技术征文 原本地址:SpringMVC 干货系列:从零搭建 SpringMVC+mybatis(四):Sp...

    joyvw 评论0 收藏0
  • SpringCloud 053 )CentOS7 中用 Docker 部署一个简单的基于 Eu

    摘要:第篇中用部署一个简单的基于服务治理发现的项目一大致介绍纠结了一下下,这么简单的部署流程是否需要详细的贴出来,然而纠结了一下还是将这个简单的部署流程补充完整了经过上节的讲解,相信大家已经对的命令操作都有了一定的了解,这里我就暂且默认大家都拥 SpringCloud(第 053 篇)CentOS7 中用 Docker 部署一个简单的基于 Eureka 服务治理发现的项目 - 一、大致介绍 ...

    Enlightenment 评论0 收藏0
  • SpringCloud 053 )CentOS7 中用 Docker 部署一个简单的基于 Eu

    摘要:第篇中用部署一个简单的基于服务治理发现的项目一大致介绍纠结了一下下,这么简单的部署流程是否需要详细的贴出来,然而纠结了一下还是将这个简单的部署流程补充完整了经过上节的讲解,相信大家已经对的命令操作都有了一定的了解,这里我就暂且默认大家都拥 SpringCloud(第 053 篇)CentOS7 中用 Docker 部署一个简单的基于 Eureka 服务治理发现的项目 - 一、大致介绍 ...

    mgckid 评论0 收藏0
  • 2021 年最新基于 Spring Cloud 的服务架构分析

    摘要:是一个相对比较新的微服务框架,年才推出的版本虽然时间最短但是相比等框架提供的全套的分布式系统解决方案。提供线程池不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务器雪崩的问题。通过互相注册的方式来进行消息同步和保证高可用。 Spring Cloud 是一个相对比较新的微服务框架,...

    cikenerd 评论0 收藏0
  • 这次要是讲不明白Spring Cloud核心组件,那我就白编这故事了

    摘要:我不听,我就是这么命名。任何服务启动以后,都会把自己注册到的注册表中当服务死亡的时候,也会通知。服务拿到结果后,会把结果缓存在本地的注册表里。根据负载均衡策略,从注册表中选择一个真正的实例地址。 原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。 这几天可真是热啊,泡个海澡是再好不过了。玩的正起劲,突然脚底绊上一股暗流,然后我就一直在水里旋转旋转旋转...终于...

    stdying 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<